Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment tester dans et entre chacune de plusieurs tables ?

Eh bien, Leonid a raison, les jointures de table sont ce dont vous avez besoin. "Une clause SQL JOIN est utilisée pour combiner des lignes de deux tables ou plus, en fonction d'un champ commun entre elles." - http://www.w3schools.com/sql/sql_join.asp aussi simple que cela. Vous dites que pour la table A et la table B, ce champ commun est le ShopLot et pour les tables B et C, le ContainerRef correspond au ContainerID.

Faisons cela étape par étape.

Commençons donc par sélectionner les colonnes des tables que nous voulons afficher

 SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID

Vous voyez qu'il n'y a qu'un seul ShopLot et ContainerRef car c'est un champ commun comme nous l'avons déjà dit et il n'est pas nécessaire d'afficher la même date deux fois sur une ligne.

La prochaine étape serait de voir d'où nous SÉLECTIONNONS ces colonnes. Dans cette étape, nous combinons les lignes de ces tables séparées et créons essentiellement une table avec toutes ces colonnes à partir de l'instruction select. Cela ressemblera à ceci

FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

Que s'est-il passé ici. D'abord, nous avons dit SELECT (quelque chose) FROM Table_A et (inner) la joignent à Table_B... Ensuite, il y a une question sur la façon de joindre ces deux tables (basée sur quoi ?) ? Et la réponse est ON Champs Table_A.ShopLot et Table_B.ShopLot. Prenez une ligne de Table_A, consultez la valeur du champ ShopLot et recherchez toutes les lignes avec cette valeur (le cas échéant) dans Table_B et joignez-les. Table_C est jointe de la même manière que seul le nom des champs est modifié.

Ensuite, la troisième étape consiste à créer la clause WHERE. C'est probablement la partie la plus facile car nous avons maintenant une grande table et nous avons juste besoin de dire ce dont nous avons besoin

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Et c'est tout. J'ai essayé de faire simple comme je pouvais. Je parie qu'il y a beaucoup d'explications en ligne pour les baigneurs, il suffit de faire une petite recherche...

Voici un code complet :

SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

J'espère que cela vous aidera un peu, ce n'est pas compliqué comme c'est le cas au premier abord. Ce serait mieux si l'exemple était avec deux tables mais c'est ce que c'est. GL