Joindre 3 tables avec mySQL avec 1 de la requête
Ce qui a été demandé et répondu dans les différentes instances, mais tout ce que j'ai vu n'a pas assez de travail pour mon problème.
PROBLÈME: j'ai 3 tables j'ai besoin d'extraire des données à partir en même temps pour comparer et en extraire des informations. Tous les 3 tables contiennent un "e-mail" de la colonne. Maintenant, un email de l'utilisateur de la table table1 peut correspondre à même de messagerie de l'utilisateur dans les deux table2 ET tableau3, en fonction de l'état de l'utilisateur. OU un courriel à partir de la table1 ne correspondent soit à un e-mail dans table2 ou tableau3, selon l'utilisateur d'état de nouveau. Par exemple, un utilisateur peut avoir un état rouge (utilisateur s'affichera dans la table2), d'un bleu d'état (utilisateur s'affichera dans tableau3), ou les deux, le rouge et le bleu (de l'utilisateur s'affichent dans les deux, table2 et tableau3).
CE qui EST NÉCESSAIRE: un e-mail à partir de table1 doit être comparé à d'email dans table2 et tableau3 et de retourner une valeur de région pour un utilisateur donné, qui est enregistré dans la table2 et tableau3 mais pas dans la table1. Je sais. Charmante architecture de données! De toute façon, j'ai pu JOIN
table1 à la table2 très réussi, mais je ne suis pas sûr de la façon de taper sur un JOIN
avec tableau3.
Voici la requête pour 2 tables:
SELECT * FROM table1
INNER JOIN table2
ON table2.email = table1.email
WHERE month = 'numberHere' ORDER BY submitdate DESC
Quand j'ai tout simplement ajouter une autre INNER JOIN
mon code ne rompt pas pour dire, mais il ne veut pas me donner des lignes à afficher. Donc le code ci-dessous ne fonctionne pas malgré les nombreux exemples de travail à partir du web:
SELECT * FROM table1
INNER JOIN table2
ON table2.email = table1.email
INNER JOIN table3
ON table3.email = table2.email
WHERE month = 'numberHere' ORDER BY submitdate DESC
- vous devez poster votre structure de table pour toutes les 3 tableaux
Vous devez vous connecter pour publier un commentaire.
Pour correspondre à la ligne de
table1
en tout cas, et les lignes des autres tables seulement si elles le sont, vous devez utiliserLEFT JOIN
, de rejoindretable2
ettable3
avectable1
(pastable2
avectable1
ettable3
avectabel2
):De cette façon, vous sélectionnez les valeurs de
table1
même sans correspondance dans les autres tables.En savoir plus sur les Jointures SQL: Différentes Jointures SQL
Vous devez utiliser
LEFT JOIN
, de sorte que les jointures réussir, même si il n'y a pas de ligne correspondante dans l'une des tables.Les conditions supplémentaires de filtrer les lignes qui n'ont pas de correspondance dans l'une des tables.