Mehrere COUNT() in einer Abfrage
So, dann checke ich mal das neue Xairro ab und nerve gleich mal mit meiner Frage:
Weshalb gibt mir diese Abfrage bei diesen Tabellen immer nur 0 aus?
Tabellen:
tabelle_a tabelle_b
id_a | spalte_a id_b | spalte_b
-----|--------- -----|-----------
1 | wert_a 1 | wert_x
2 | wert_x 2 | wert_y
3 | wert_a 3 | wert_b
Tabellen c und d ähnlich.
Abfrage: SELECT COUNT(a.id_a) AS abfrage_a, COUNT(b.id_b) AS abfrage_b, COUNT(c.id_c) AS abfrage_c, COUNT(d.id_d) AS abfrage_d FROM tabelle_a a, tabelle_b b, tabelle_c c, tabelle_d d WHERE a.spalte_a = 'wert_a' AND b.spalte_b = 'wert_b' AND c.spalte_c = 'wert_c' AND d.spalte_d = 'wert_d'
Gewünschtes Ergebnis:
abfrage_a | abfrage_b | abfrage_c | abfrage_d
----------|-----------|-----------|----------
2 | 1 | 3 | 2
Echtes Ergebnis:
abfrage_a | abfrage_b | abfrage_c | abfrage_d
----------|-----------|-----------|----------
0 | 0 | 0 | 0
Natürlich, ich könnte alles einzeln abfragen aber das ist mir zuviel Script und zu primitiv...
Konsti
Schokolade?!
Hast aber nen schoenes Rating Konsti :P
So, ich habe jetzt eine Lösung bekommen (auf redio.de) und möchte sie euch hier reinstellen.
godguild hat das hier geschrieben: Da Count(*) ja immer ein Ergebnis zurückliefert, nämlich einen Wert erwartest du quasi eine "Zeile" sprich einen Record für alle Abfragen, daher ist es sinnvoll dies in Sub-Selects zu packen. Ein weiterführendes FROM in der Hauptselect Anweisung braucht nicht mit angegeben zu werden, dem SELECT würde ja auch ein "SELECT 1 as Eins" genügen um eine Row mit einer 1 zu retournieren
Code:
$sql= "SELECT (SELECT COUNT(a.id_a) FROM tabelle_a a WHERE a.spalte_a = 'wert_a') as erg_a, (SELECT COUNT(b.id_b) FROM tabelle_b b WHERE b.spalte_b = 'wert_b') as erg_b";
Schokolade?!