J’ai cherché pendant un moment la solution à cette requête SQL donc autant vous la faire partager.
Imaginons que vous ayez 3 tables sous MySQL :
- walk
- walk_photo
- photo
Dans votre table photo certaines photos n’ont pas de titre (title) ou celui-ci est en NULL. Vous voulez donc faire un UPDATE de la table photo en associant les titres de la table walk correspondant aux photos.
Problème : si vous n’aviez que 2 tables, cela ne poserait aucun problème car il suffirait de faire un UPDATE en joignant les 2 par un WHERE walk.id = photo.id . Or ici ce n’est pas possible car l’on a une table entre les deux (walk_photo) qui lie les 2 tables, les deux premières n’ayant pas de clé commune.
Donc voici la solution:
UPDATE photo SET photo.title = walk.title JOIN walk_photo ON walk_photo.photo = photo.id JOIN walk ON walk.id = walk_photo.walk WHERE photo.title IS NULL OR photo.title = ''
Je pense que la requête est assez claire pour être dispensé de commentaire, néanmoins pensez à mettre le SET avant la jointure! Sinon ça ne marchera pas! Au début j’avais commencé par faire ma jointure avant de faire le set et je ne comprenais pas pourquoi ça ne marchait pas….

Bulletins (RSS)