Lorsque vous utilisez LEFT JOIN ou RIGHT JOIN il n'ya pas vraiment "besoin" d'un "où" la déclaration lorsque vous utilisez jointure normale utiliser WHERE mais pas lorsque vous faites une gauche ou à droite rejoindre. Syntaxe pourrait être comme ça pendant une jointure gauche:
SELECT people.firstname, cars.whatcar FROM people LEFT JOIN cars ON people.p_id = cars.p_id
Qu'est ce code ne déclare d'abord ce qu'il essaie de sélectionner. dans ce cas, l'information provenant de deux tables: people.firstname et cars.whatcar (pour être plus précis le prénom de la table personnes et les informations de la table whatcar voitures).
Puis vient le rejoindre: des gens de LEFT JOIN voitures
Qu'est ce qu'il fait cela, il choisit deux tables de travailler contre (un peuple d'être et les autres voitures étant). Focus sont cependant sur le côté gauche dans une jointure gauche, ici vous pouvez voir ce tableau les gens sont sur la gauche et les voitures sur le droit, la différence est expliquée plus bas mais il faut noter ce qui est sur la gauche et à droite.
Que la ligne suivante ne:
Sur les voitures = people.p_id. p_id
Est-ce qu'il définit une instruction conditionnelle pour fonctionner JONCTION. Le prénom où existe people.p_id seront choisis quoi qu'il arrive. Et puis l'instruction conditionnelle est vérifié pour voir s'il ya un cars.p_id et si elle ne vient que compléter le long ainsi. Mais le cars.p_id pourrait très bien être vide où une people.p_id existe et, fondamentalement, vous obtiendrez une déclaration contenant prénom mais une valeur NULL pour la deuxième entrée.
Imaginons nous avons obtenu ces gens dans notre tableau de personnes:
p_id = 1;
name = "joe";
p_id = 2;
name = "mary";
p_id = 3;
name = "quirk";
- p_id = 1;
- name = "joe";
- p_id = 2;
- name = "mary";
- p_id = 3;
- name = "quirk";
Et cela dans notre tableau de voitures:
p_id = 1;
name = "Peugeot 308";
p_id = 2;
name = "Mercedes E63";
p_id = 4;
name = "Saab";
- p_id = 1;
- name = "Peugeot 308";
- p_id = 2;
- name = "Mercedes E63";
- p_id = 4;
- name = "Saab";
Notre énoncé de choisir dans le début nous donnerait ceci:
Joe possède la Peugeot 308, est propriétaire de Marie, la Mercedes E63, bizarrerie propriétaire (NULL). Fondamentalement, vous obtenez un retour sur bizarrerie, malgré qu'il ne possède pas de voiture (cela pourrait être un aspect très utile de gauche / droite se joint). Si vous voulez vérifier le statut de toutes les voitures (qui a obtenu un propriétaire et ce que la voiture n'a pas de propriétaire) que vous pouvez faire une des actions suivantes:
SELECT people.firstname, cars.whatcar FROM people RIGHT JOIN cars ON people.p_id = cars.p_id
L'accent est mis désormais sur la table de droite et le retour serait comme suit:
joe Peugeot propriétaire 308, Marie Mercedes E63 propriétaire, propriétaire de Saab (NULL). La bizarrerie personne n'est même pas mentionné, l'accent est maintenant sur le côté droit (CARS).
SELECT people.firstname, cars.whatcar FROM cars LEFT JOIN people ON people.p_id = cars.p_id
Fondamentalement, le mettant une jointure gauche et le branchement place avec les voitures et les gens de notre instruction de jointure!
Une jointure normale:
SELECT people.firstname, cars.whatcar FROM cars LEFT JOIN people WHERE (people.p_id = cars.p_id)
ne revenait que les choses où il ya un people.p_id ET un cars.p_id qui correspond. Fondamentalement, pas de valeurs NULL. C'est ce qui de retour de notre JOIN par exemple: joe propriétaire de la Peugeot 308, est propriétaire de Marie, la Mercedes E63.
Je ne suis pas sûr que ce soit utile ou de corriger, à tous les points. J'ai obtenu mon premier travail REJOINT il ya quelques jours! : P