Imaginez que vous avez une table comme ceci:ID parent et enfant
+-------------+------------------+------+-----+---------+----------------+
| 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 | |
+-------------+------------------+------+-----+---------+----------------+
Appelons ce tableau locations
Cela représente une ville ou un état.
Par exemple si le champ name
est Los Angeles
, son parent_id représentera une ligne avec un champ name
California
.
Maintenant, imaginez que vous avez une autre table comme ceci:
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(450) | YES | | NULL | |
| state | varchar(135) | YES | | NULL | |
+-----------------+---------------+------+-----+---------+----------------+
Appelons ce tableau cities
.
Chaque ligne représente une ville et le champ id
correspond au id
dans le tableau locations
.
Dans ce tableau, le champ state
est toujours vide, donc je voudrais le mettre à jour avec le champ name
de la table locations
.
J'ai essayé cette requête afin d'obtenir la valeur state
, mais il ne semble pas fonctionner (il faut beaucoup de temps et rien ne se passe):
SELECT name FROM locations WHERE id IN
(SELECT parent_gid FROM locations INNER JOIN cities
ON locations.id = cities.id);
Toutes les suggestions sur la façon d'atteindre ce?
Les informations de votre deuxième table "villes" ne sont-elles pas complètement redondantes à la première table? Pourquoi en avez-vous besoin du tout? – Argeman
Vous avez raison. Malheureusement, il n'est pas en mon pouvoir de modifier le schéma de la base de données. Quoi qu'il en soit, c'est un exemple d'abstraction qui, une fois résolu, me permettrait de résoudre un problème plus important. – rfc1484
comment sont reliées les tables? que voulez-vous faire, mettre à jour ou sélectionner seulement? –