INNER JOIN MySQL : juste pour être sûr...

a marqué ce sujet comme résolu.
Auteur du sujet

Salut !

Juste pour être sûr à 100% de son fonctionnement, on est d’accord que genre dès qu’une égalité de clefs étrangères n’est pas trouvée dans au moins une table, le résultat ne comportera pas la ligne en question ?

Exemple :

SELECT * FROM TableA INNER JOIN ON A.a = B.a INNER JOIN B.b = C.b

=> Si (par exemple) pour une valeur de B.b donnée, on ne trouve pas C.b, alors le résultat ne comportera pas la ligne correspondante (qui aurait dû contenir toutes les colonnes de A + toutes les colonnes de B + toutes les colonnes de C, non) ?

=> par ailleurs, autre question : on est d’accord que ça contient TOUTES les lignes pour lesquelles on a bien les égalités A.a = B.a ET B.b = C.b ?

Édité par HerbeQuiBenchEtSquat

+0 -0

Je ne suis pas sûr de ce que tu veux dire.

N’hésite pas à te faire des tables d’exemples et à jouer avec, comme ça tu sera sûr de ce que tu obtiens dans quel cas.

Pas besoin d’aller chercher loin, des simples tables du style :

a.id a.valeur
1 A
2 B
b.id b.id_a b.valeur
1 1 C
2 1 D
3 2 E
4 4 F
c.id c.id_b c.valeur
1 1 G
2 1 H
3 2 I
3 5 J

permettent déjà de bien comprendre ce qui peut se passer.

Auteur du sujet

Je ne suis pas sûr de ce que tu veux dire.

N’hésite pas à te faire des tables d’exemples et à jouer avec, comme ça tu sera sûr de ce que tu obtiens dans quel cas.

Pas besoin d’aller chercher loin, des simples tables du style :

a.id a.valeur
1 A
2 B
b.id b.id_a b.valeur
1 1 C
2 1 D
3 2 E
4 4 F
c.id c.id_b c.valeur
1 1 G
2 1 H
3 2 I
3 5 J

permettent déjà de bien comprendre ce qui peut se passer.

SpaceFox

Bonjour cher renard,

Désolé du retard.

En me basant sur tes tables :

SELECT * FROM TableA INNER JOIN ON a.id = b.id_a INNER JOIN b.id = c.id_b

Retournerait les trois lignes suivantes :

  • (1 ; A ; 1 ; 1 ; C ; 1 ; 1 ; G)

  • (1 ; A ; 1 ; 1 ; C ; 2 ; 1 ; H)

  • (1 ; A ; 2 ; 1 ; D ; 3 ; 2 ; I)

+0 -0

Hello,

N’essaie pas de réfléchir avec mes exemples : crées réellement ces tables dans un SGBD et lance de vraies requêtes, ajoutes des lignes pour vérifier ce qui se passe (il manque plein de cas dans celles que j’ai données).

Par exemple, je pense que la commande que tu donnes renverra surtout quelque chose comme une erreur de syntaxe (si par hasard elle fonctionne, elle est très inhabituelle).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte