Revo: MySQL Subquerie mit Daten aus dem übergeordneten Query

Hallo alle,

ich möchte eine Abfrage auf eine Datenbank ausführen, bei der Informationen aus zwei Tabellen zusammengefasst werden.

Tabelle 1                             Tabelle 2
+---------------+                     +--------------+
| id            |   <-------------    | id           |
+---------------+                     | beschreibung |
                                      +--------------+

Pseudo-SQL:
select tabelle2.id, beschreibung, (select count(*) from tabelle1 where id = äußeres_query.id) from tabelle2;

In Worten:
Hole die id und die Beschreibung aus Tabelle 2 und hänge an jede Zeile an, wie oft die id in Tabelle 1 vorkommt.

1. Gibt es eine Möglichkeit dieses konkrete Problem zu lösen? Möglicherweise mit Joins?
2. Gibt es in SQL (außer der Übergabe an eine Stored Procedure - da auf dem Server, auf dem die Abfrage ausgeführt werden soll nicht verfügbar) eine Möglichkeit aus einem Subquery auf Felder des äußeren Querys zuzugreifen?

Lg
Revo

  1. Mahlzeit Revo,

    Hole die id und die Beschreibung aus Tabelle 2 und hänge an jede Zeile an, wie oft die id in Tabelle 1 vorkommt.

    Folgendes sollte ein ansatzweise brauchbares Ergebnis liefern:

    SELECT t2.id  
    ,      t2.beschreibung  
    ,      count(t1.*) AS anzahl  
      FROM tabelle2 AS t2  
      JOIN tabelle1 AS t1 ON t2.id = t1.id  
     GROUP BY t2.id  
    ,         t2.beschreibung
    

    Wenn nicht, beschreibe bitte detaillierter, was genau nicht richtig ist und wie genau Deine Datenstruktur aussieht.

    1. Gibt es in SQL (außer der Übergabe an eine Stored Procedure - da auf dem Server, auf dem die Abfrage ausgeführt werden soll nicht verfügbar) eine Möglichkeit aus einem Subquery auf Felder des äußeren Querys zuzugreifen?

    Nein, das geht generell nicht. Ganz einfach, weil Sub-Queries *VOR* der äußeren Query abgearbeitet werden ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Ok. Bei Frage 1 warst du wohl schneller als ich selbst ;) Danke trotzdem und sorry ...

      Zu Frage 2:

      Nein, das geht generell nicht. Ganz einfach, weil Sub-Queries *VOR* der äußeren Query abgearbeitet werden ...

      Gibt es denn sowas wie "Neben-Queries" statt "Unter-Queries"?

  2. Frage

    1. Gibt es eine Möglichkeit dieses konkrete Problem zu lösen? Möglicherweise mit Joins?

    nehme ich mal zurück ...

    select tabelle2.id, beschreibung, count(tabelle1.id) from tabelle2 left join tabelle1 on tabelle1.id = tabelle2.id group by tabelle2.id