Datensätze mehrerer Tabellen zählen
Peter
- datenbank
Tachauch,
Folgende Situation (mysql 4.0.18):
Mit
SELECT count(*) FROM tabelle1 WHERE user=17
SELECT count(*) FROM tabelle2 WHERE user=17
SELECT count(*) FROM tabelle3 WHERE user=17
bekomme ich heraus, wieviele Einträge es für user 17 in den verschiedenen Tabellen gibt.
Jetzt wollte ich das zu einem einzigen Select zusammenfassen.
SELECT count(t1.id), count(t2.id), count(t3.id) FROM tabelle1 AS t1, tabelle2 AS t2, tabelle3 AS t3 WHERE t1.user=17 OR t2.user=17 OR t3.user=17
Dabei bekomme ich aber (vermutlich, habs nicht nachgerechnet, aber die Größenordnung könnte hinkommen) 3mal das Produkt der 3 Anzahlen, nicht die 3 Anzahlen. Nützt mir also nichts - denn wenn überhaupt, dann sind die 3 Anzahlen nur zufällig Primzahlen (und auch dann bliebe noch das Problem, welcher der Primfaktoren zu welcher Tabelle gehört.
Ist es überhaupt möglich, unabhängige Daten mehrerer Tabellen mit einer Abfrage zu erhalten?
Oder muß ich doch bei den Einzelabfragen bleiben?
Bis denne,
Peter
Hallo Peter,
du baust hier ein Kreuzprodukt aus allen 3 Tabellen, also z.B.
Tabelle 1
Name user
meier 17
mueller 20
Tabelle 2
Beruf user
Wirt 25
Kellner 17
Winzer 15
Tabelle 3
Ort user
Hamburg 17
München 15
Ergebnistabelle
Name tabelle1.user Beruf tabelle2.user ort tabelle3.user
meier 17 wirt 25 Hamburg 17
meier 17 wirt 25 München 15
meier 17 kellner 17 Hamburg 17
meier 17 kellner 17 München 15
meier 17 winzer 15 Hamburg 17
meier 17 winzer 15 München 15
mueller 20 wirt 25 Hamburg 17
mueller 20 wirt 25 München 15
mueller 20 kellner 17 Hamburg 17
mueller 20 kellner 17 München 15
mueller 20 winzer 15 Hamburg 17
mueller 20 winzer 15 München 15
Wenn du darauf deine Bedingungen und count anwendest, kommt so ein Ergebnis, wie du es beschreibst.
Gruß Mia
echo $begrüßung;
Ist es überhaupt möglich, unabhängige Daten mehrerer Tabellen mit einer Abfrage zu erhalten?
Du kannst diese Abfragen mit UNION verknüpfen, dann hast du schon mal nur noch eine Ergebnismenge, aber immer noch mehrere Datensätze.
Ansonsten sehe ich da nur SubSelects und die gehen erst ab MySQL 4.1
echo "$verabschiedung $name";
yo,
Ist es überhaupt möglich, unabhängige Daten mehrerer Tabellen mit einer Abfrage zu erhalten?
über die eindeutige ID der einzelnen tabellen könnte das gehen, wie immer ungeprüft aud syntaktische oder semantische fehler....
SELECT COUNT(DISTINCT t1.id), COUNT(DISTINCT t2.id), COUNT(DISTINCT t3.id)
FROM tabelle1 AS t1, tabelle2 AS t2, tabelle3 AS t3
WHERE t1.user = 17 AND t2.user = 17 AND t1.user = 17
Ilja
Hello,
SELECT COUNT(DISTINCT t1.id), COUNT(DISTINCT t2.id), COUNT(DISTINCT t3.id)
FROM tabelle1 AS t1, tabelle2 AS t2, tabelle3 AS t3
WHERE t1.user = 17 AND t2.user = 17 AND t1.user = 17
Bei 3.23.55-max funktioniert das nicht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom