MySQL: Filtern von Daten
Chris
- datenbank
0 Sven Rautenberg0 Chris0 Sven Rautenberg0 Chris
0 André Laugks0 Chris
Hi!
Nochmal ein MySQL-Problem. Kann man bei MySQL keine Unterabfragen machen, oder warum funktioniert das hier nicht:
SELECT bepr_name, SUM(bepr_anzahl) AS summe, AVG(bepr_preis) AS schnitt, be_nummer FROM shop_bestellteprodukte GROUP BY bepr_name HAVING be_nummer IN (SELECT be_nummer FROM shop_bestellungen WHERE status_id=3 OR status_id=5) ORDER BY summe DESC
Es handelt sich um 2 Tabellen. Eine beinhaltet Bestelldaten, die andere die bestellten Produkte. Es sollen nur die Produkte angezeigt werden, die in der dazugehörigen Bestellung des Status "3" bzw. "5" haben.
Danke für jede Hilfe!
Moin!
Hi!
Nochmal ein MySQL-Problem. Kann man bei MySQL keine Unterabfragen machen, oder warum funktioniert das hier nicht:
Schau in die Doku und finde es heraus (was übrigens immer eine gute Idee ist, bevor oder wenn man auf Probleme stößt): http://www.mysql.com
Meines Wissens nach kann MySQL in Version 3 keine Subselects.
- Sven Rautenberg
Meines Wissens nach kann MySQL in Version 3 keine Subselects.
Das denke ich auch.
Mich interessiert jedoch mehr, wie man das Problem anders lösen könnte.
Moin!
Meines Wissens nach kann MySQL in Version 3 keine Subselects.
Das denke ich auch.
Aha, warum fragst du dann, warum MySQL das nicht kann?
Mich interessiert jedoch mehr, wie man das Problem anders lösen könnte.
Warum stellst du diese Frage nicht gleich im ersten Posting?
http://www.mysql.com/documentation/mysql/bychapter/manual_Introduction.html#ANSI_diff_Sub-selects
- Sven Rautenberg
Aha, warum fragst du dann, warum MySQL das nicht kann?
Weil ich mir mit "IN" nicht sicher war.
Warum stellst du diese Frage nicht gleich im ersten Posting?
Damit ich sie im 2. stellen kann.
http://www.mysql.com/documentation/mysql/bychapter/manual_Introduction.html#ANSI_diff_Sub-selects
Das hilft mir leider in meinem Fall auch nicht weiter.
Hallo!
Es handelt sich um 2 Tabellen. Eine beinhaltet Bestelldaten, die andere die bestellten Produkte. Es sollen nur die Produkte angezeigt werden, die in der dazugehörigen Bestellung des Status "3" bzw. "5" haben.
Sollte das nicht über ein JOINs zu lösen sein? Subselects sind oft über JOINs zu lösen.
Sunselects wird MySQL erst ab Version 4.1 geben. MySQL 4.0 befindet sich noch im Betastadium.
http://www.mysql.de/products/mysql-4.0/index.html
MfG, André Laugks
L-Andre @ gmx.de
Sollte das nicht über ein JOINs zu lösen sein? Subselects sind oft über JOINs zu lösen.
Ich hatte es so mal versucht:
SELECT bepr_name, SUM(bepr_anzahl) AS summe, AVG(bepr_preis) AS schnitt, be_nummer FROM shop_bestellteprodukte GROUP BY bepr_name LEFT JOIN shop_bestellungen ON shop_bestellteprodukte.be_nummmer=shop_bestellungen.be_nummer where shop_bestellungen.status_id =3 OR shop_bestellungen.status_id=5
aber das klappt leider auch nicht...
Hallo,
SELECT bepr_name, SUM(bepr_anzahl) AS summe, AVG(bepr_preis) AS schnitt, be_nummer FROM shop_bestellteprodukte GROUP BY bepr_name LEFT JOIN shop_bestellungen ON shop_bestellteprodukte.be_nummmer=shop_bestellungen.be_nummer where shop_bestellungen.status_id =3 OR shop_bestellungen.status_id=5
aber das klappt leider auch nicht...
... weil Du Dich nicht an die vorgeschriebene SQL-Syntax gehalten hast. Es gibt eine Reihenfolge, nach der die einzelnen Klauseln der SQL-Abfrage angeordnet sein müssen. Und GROUP BY hat definitiv vor dem JOIN nichts verloren.
Grüße
Klaus