Voici ma structure de table:mySQL complexe requête SELECT?
users:
id | email
emails:
id | subject | body
user_emails:
user_id | email_id
Il est conception très simple. Cependant, j'ai besoin de sélectionner le premier (le plus bas) email.id pour tous les users.id qui ne sont pas associés dans user_emails.
À titre d'illustration:
users:
id | email
1 | [email protected]
2 | [email protected]
3 | [email protected]
emails:
id | subject | body
1 | sub1 | body1
2 | sub2 | body2
user_emails:
user_id | email_id
1 | 1
1 | 2
2 | 1
Comme les données montrent:
- utilisateur 1 a reçu email 1 et 2 déjà si la sélection doit exclure cet utilisateur.
- utilisateur 2 n'a reçu email 1, il devrait donc sélectionner l'utilisateur 2 et email 2.
- Utilisateur 3 n'a pas reçu d'e-mails, il doit sélectionner l'utilisateur 3 et email 1.
Je vais le faire en PHP donc toute logique devrait être écrit en PHP si cela ne peut être fait avec mySQL seul.
Merci à l'avance
EDIT: Je dois mentionner sans doute qu'il y aura des milliers d'utilisateurs ID de centaines et de courrier électronique id. Le script qui enverra tous ces emails sera exécuté une fois par jour. Donc, cela devrait être aussi optimisé que possible.
Lire sur LEFT JOIN. –
J'ai mais je ne suis pas très expérimenté avec mySQL et cela devient confus pour moi. –
Votre réponse devrait être affichée telle, et vous devriez alors accepter une réponse. :-) –