Abfrage über 2 Tabellen
-
Mahlzeit zusammen !
Ich bin nicht gerade ein SQL-Guru und soll jetzt eine Verknüpfung über zwei Tabellen realisieren und so eine Liste auflösen.
Das ganze sieht so aus:
In Tabelle A stehen viele Komponenten einer Maschine mit einer Nummer und diversen Daten.
Nummer Attribut1 Attribut2 Attribut3 ..... 111 MaschineX 0,678 1,1 134 SchraubeY 0,890 4,3 156 TeilZ 1,001 12,0 190 MutterU 2,110 24,3
In einer zweiten Tabelle B steht genau woraus jeder dieser Komponenten besteht:
Nummer Komponente 111 134 111 190 156 134 156 190
Und ich möchte jetzt auf der einen Seite eine Artikelnummer eingeben, z.B. die 111 und als Ergebnis eine Auflistung der Namen der zugehörigen Komponenten bekommen.
Ich beginne mal mit SELECT A.Nummer, A.Attribut1 from A WHERE ...
und dann weiß ich nicht mehr weiter. Kann mir da vielleicht ein JOIN weiterhelfen ?
Ich freu mich über jeden Hinweis !!
Liesl
-
Ich stelle es mir ungefähr so vor, aber das darf ich laut SQL leider nicht:
SELECT B.Nummer,B.Komponente, A.Attribut1 FROM A INNER JOIN B ON (A.nummer = B.nummer) WHERE B.Nummer = (SELECT A.Nummer from A Attribut2 > 2);
Es geht also darum aus der Liste A mehrere Zeilen (=Produkte) auszuwählen und zu jedem Teil die dazugehörigen Teile (falls vorhanden) zurückzubekommen.
Wie gesagt, leider darf ich das nicht laut SQL, weil
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
-
Damm schreib das > 2 in eine WHERE-Klausel.
-
Ja, das ist ein Tippfehler - in dem subquery ist natürlich eine gültige WHERE-Klausel
-
Hab lange kein SQL mehr gemacht, aber evtl. WHERE B.NUMMER IN (SELECT ...) ?
-
DANKE, das sieht SEHR gut aus !
-
SELECT A.* FROM A,B WHERE A.Nummer = B.Nummer AND B.Nummer = 'deineeingabe'