次のようなテーブルがあると想像してください。
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | | |
| parent_id | int(11) | YES | MUL | NULL | |
+-------------+------------------+------+-----+---------+----------------+
このテーブルを呼びましょうlocations
これは、都市または州を表します。
たとえば、name
fieldが、の場合、そのparent_idはフィールドLos Angeles
を持つ行を表します。name
California
ここで、次のような別のテーブルがあると想像してください。
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(450) | YES | | NULL | |
| state | varchar(135) | YES | | NULL | |
+-----------------+---------------+------+-----+---------+----------------+
このテーブルを呼びましょうcities
。
各行は都市を表し、フィールドはテーブルのにid
一致します。id
locations
このテーブルでは、フィールドは常に空なので、テーブルのフィールドstate
で更新したいと思います。name
locations
値を取得するためにこのクエリを試しましたstate
が、機能していないようです(時間がかかり、何も起こりません)。
SELECT name FROM locations WHERE id IN
(SELECT parent_gid FROM locations INNER JOIN cities
ON locations.id = cities.id);
これを達成する方法について何か提案はありますか?