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'


Anmelden zum Antworten