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 :

  1. walk
  2. walk_photo
  3. 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….

Partagez:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • MySpace
  • TwitThis

Une réponse à “SQL : faire un UPDATE avec jointures sur plusieurs tables”
  1. gucci handbags dit :
      Surfe avec Internet Explorer 5.5 Internet Explorer 5.5 sur Windows 2000 Windows 2000
    Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322)

    How much money do i need to survive in Budapest as a foreign student?

Répondre

CAPTCHA image