Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie teste ich in und zwischen jeder von mehreren Tabellen?

Nun, Leonid hat recht, Tabellenverknüpfungen sind das, was Sie brauchen. "Eine SQL JOIN-Klausel wird verwendet, um Zeilen aus zwei oder mehr Tabellen zu kombinieren, basierend auf einem gemeinsamen Feld zwischen ihnen." - http://www.w3schools.com/sql/sql_join.asp so einfach ist das. Sie sagen, dass für Tabelle A und Tabelle B das gemeinsame Feld das ShopLot ist und für Tabelle B und C die ContainerRef mit der ContainerID übereinstimmt.

Lassen Sie uns das Schritt für Schritt tun.

Wählen wir also zunächst Spalten aus den Tabellen aus, die wir anzeigen möchten

 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

Wie Sie sehen, gibt es nur einen ShopLot und einen ContainerRef, weil dies ein gemeinsames Feld ist, wie wir bereits gesagt haben, und es nicht notwendig ist, dasselbe Datum zweimal in einer Zeile anzuzeigen.

Der nächste Schritt wäre zu sehen, woher wir diese Spalten AUSWÄHLEN. In diesem Schritt kombinieren wir Zeilen aus diesen separaten Tabellen und erstellen im Grunde eine Tabelle mit all diesen Spalten aus der Select-Anweisung. Das sieht so aus

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

Was ist hier passiert. Zuerst sagten wir SELECT (something) FROM Table_A und (inner) join her with Table_B... Dann gibt es eine Frage, wie man diese beiden Tische verbindet (basierend auf was?)? Und die Antwort lautet ON Table_A.ShopLot und Table_B.ShopLot Felder. Nehmen Sie eine Zeile aus Table_A, sehen Sie sich den Wert des ShopLot-Felds an und finden Sie alle Zeilen mit diesem Wert (falls vorhanden) in Table_B und verbinden Sie sie. Tabelle_C wird auf die gleiche Weise verbunden, nur der Name der Felder wird geändert.

Der dritte Schritt besteht darin, eine WHERE-Klausel zu erstellen. Dies ist wahrscheinlich der einfachste Teil, da wir jetzt eine große Tabelle haben und nur sagen müssen, was wir brauchen

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

Und das ist es. Ich habe versucht, es so einfach wie möglich zu machen. Ich wette, es gibt online viele Erklärungen für Badegäste, Sie müssen nur ein wenig suchen ...

Hier ist ein vollständiger Code:

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'

Ich hoffe, das hilft ein wenig, es ist nicht kompliziert, wie es auf den ersten Blick aussieht. Es wäre besser, wenn das Beispiel mit zwei Tischen wäre, aber es ist, was es ist. GL