3 SELECTS verbinden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Hey,
wie kann man folgende 3 SELECTS in 1 SELECT verarbeiten?
SELECT v.name, COUNT(*) FROM verein.v INNER JOIN tabelle1 ON t1. id= v.id INNER JOIN tabelle2 ON t2. id= v.id INNER JOIN tabelle3 ON t3. id= v.id WHERE spalte1 = 'Wert' AND spalte2 = spalte3 ORDER BY spalte4 GROUP BY spalte4 SELECT v.name, COUNT(*) FROM verein.v INNER JOIN tabelle1 ON t1. id= v.id INNER JOIN tabelle2 ON t2. id= v.id INNER JOIN tabelle3 ON t3. id= v.id WHERE spalte1 = 'Wert' AND spalte2 > spalte3 ORDER BY spalte4 GROUP BY spalte4 SELECT v.name, COUNT(*) FROM verein.v INNER JOIN tabelle1 ON t1. id= v.id INNER JOIN tabelle2 ON t2. id= v.id INNER JOIN tabelle3 ON t3. id= v.id WHERE spalte1 = 'Wert' AND spalte2 < spalte3 ORDER BY spalte4 GROUP BY spalte4
das sind jetzt natürlich keine funktionierendes Statements, es war ne Frage von einem Freund. Aber würd mich auch interessieren ob man das als 1 SELECT absetzen kann?
mit UNION?
Beitrag zuletzt geändert: 28.5.2009 17:09:43 von myhead -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
sehe ich das richtig, dass immer nur die Bedingung
spalte2 = spalte3
geänder wird? Dann könntest du nämlich folgendes machen:
SELECT v.name, COUNt(*), (spalte2 - spalte3) AS differenz FROM ...
Wenn du noch nach differenz sortierst bekommst du die Ergebnisse auch in der richtigen Reihenfolge. Mit PHP kannst du dann überprüfen, ob es kleiner, größer oder gleich ist.
ps3web -
kriegdervoelker schrieb:
denke müsste eigentlich mit UNION klappen
also
Statement
UNION
Statement
Aber dann würde seine WHERE-Anweisung keinen Sinn mehr machen. -
SELECT v.name, COUNT(*) FROM verein.v INNER JOIN tabelle1 ON t1. id= v.id INNER JOIN tabelle2 ON t2. id= v.id INNER JOIN tabelle3 ON t3. id= v.id WHERE spalte1 = 'Wert' AND ( (spalte2 = spalte3) OR (spalte2 > spalte3) ORDER BY spalte4 GROUP BY spalte4
oder gleich:
SELECT v.name, COUNT(*) FROM verein.v INNER JOIN tabelle1 ON t1. id= v.id INNER JOIN tabelle2 ON t2. id= v.id INNER JOIN tabelle3 ON t3. id= v.id WHERE spalte1 = 'Wert' AND spalte2 >= spalte3 ORDER BY spalte4 GROUP BY spalte4
Das sollte wohl alles in einmal ausgeben!
Beitrag zuletzt geändert: 28.5.2009 19:38:46 von deineagentur -
deineagentur schrieb:
[...]
Nope, du hast den dritten Query übersehen. Bei dem muss es entweder > = oder < sein. Also immer true. Die erste vorgeschlagene Lösung ist schon richtig... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage