Philipp Hasenfratz: Query an mehrere Tabellen

Beitrag lesen

Halihallo Bernd

ich möchte aus drei Tabellen auslesen. Aus einer möchte ich allerdings nur wissen wieviele Reihen drin sind, die bei der Spalte id die selbe id haben wie die id in den anderen Tabellen.

Dann brauchst du typischerweise einen GROUP BY und COUNT()

x.id ist primary key
y,z.id ist kein primary key

Hier wirst du das Problem haben, dass auf ein x.id mehrere y-Records
und mehrere z-Records passend sind. Ein COUNT(*) würde dir bei einem
GROUP BY x.id also (AnzahlRecordsAusY * AnzahlRecordsAusZ) liefern und
das möchtest du nicht. Ein COUNT(DISTINCT z.id) würde dir bei einem
GROUP BY x.id zwar die richtige Anzahl z.id's liefern, jedoch kannst
du dann y.text nicht auslesen, da diese nicht Bestandteil der GROUP
BY Klausel ist (alle Attribute die du nicht in der GROUP BY stehen
hast, müssen mit Aggregatsfunktionen behandelt werden wie z.B. COUNT,
MIN, MAX, FIRST etc.). Falls y.id auch PRIMARY KEY wäre, hätte man
keine Probleme => GROUP BY x.id, y.id, y.text und COUNT(*) für die
Anzahl z-Records.

Wie steht denn y.text im Bezug auf x.id (also was ist die y und was
ist die x Relation?). Dies musst du und muss man wissen, um diese
Aufgabe sinnvoll zu lösen. Entweder ein x kann mehrere y-Tupel haben
(1:N), dann sagst du uns aber nicht, welches y.text du haben
möchtest, bzw. ob man nun alle z-Tupel in Relation zu x oder zu (x,y)
zählen soll.

Für eine Lösung brauchen wir mehr Input :-)

Viele Grüsse

Philipp