Attention, l'ordre des tables est important : tu ne peux pas utiliser une table qui n'est pas encore apparue dans la requête. Le plus simple est donc de toujours écrire dans l'ordre
from table_A join table_A_B join table_B
Ton ancienne requête
1 2 3
| SELECT activite.ID as activite_id, contact.ID as contact_id
FROM activite, contact
WHERE contact.ID = activite.CONTACT1 OR contact.ID = activite.CONTACT2 OR contact.ID = activite.CONTACT3 |
devient
1 2 3 4
| SELECT activite.ID as activite_id, contact.ID as contact_id
FROM activite
LEFT JOIN contact_activites ON (activite.ID = contact_activites.ID_ACTIVITE_ASSOCIE) -- liaison entre activite et contact_activite
INNER JOIN contact ON (contact_activites.ID_CONTACT = contact.ID) -- liaison entre contact_activite et contact |
A noter que ta requête va renvoyer pour une activité donnée autant de lignes qu'il y a de contacts associés à l'activité.
Exemple, si tu as activite1 liée à contactA et contactB et activite2 liée à contactA, contactC et contactD, ta requête devrait renvoyer
activite1 - contactA
activite1 - contactB
activite2 - contactA
activite2 - contactC
activite2 - contactD
Partager