gdvlive: MySQL Sub-Sub-Select: Aktuelle ID?

Beitrag lesen

Hallo Vinzenz,

erstmal danke für deine schnelle Antwort (die war sogar zu schnell für mich ;)

Bei meiner Suche geht es explizit darum, dass ich nach Geschäften suche, die eine bestimmte Bewertung bekommen: Man kann einstellen, ob man jetzt nur Geschäfte angezeigt bekommt, die eine bessere Bewertung als 3 Sterne haben (5-Sterne-System). Nun habe ich versucht, diese Abfrage mit einem Sub-Sub-Select zum Laufen zu bringen, jedoch wird mir der Durchschnitt aller Geschäfte berechnet und verglichen.

warum verwendest Du die Aggregatsfunktion AVG()?

Wie kann ich jetzt in dem Subselect auf das aktuelle Element der höheren Ebene zugreifen?

Eine Beispieltabelle mit ein paar Beispieldatensätze und dazu das gewünschte Ergebnis mit der Begründung, warum dies das gewünschte Ergebnis wäre hilfreicher als Dein Versuch eines SQL-Statements.

Ich verwende AVG, da ich den Durchschnitt der Bewertungen auslese. Die Bewertungen werden von jedem User pro Geschäft gespeichert.

Hier mal die Versuche von Beispieltabellen:

Tabelle: geschaeft
+-------+--------+---------+
| ge_id | art_id | ge_name |
+-------+--------+---------+
|     1 |      4 | Hallo   |
|     2 |      2 | Test    |
+-------+--------+---------+

Tabelle: rating
+-------+--------+---------+
| ge_id | usr_id | ra_wert |
+-------+--------+---------+
|     1 |      3 |       4 |
|     1 |      7 |       2 |
|     2 |      5 |       1 |
+-------+--------+---------+

Bei meiner Datenbankabfrage versuche ich die ge_id und die art_id auszulesen, von z.B. Geschäften mit einer durchschnittlichen Bewertung von größer gleich als 3 Sternen.
Das Problem, das ich habe ist folgendes: Wenn ich einfach in der Abfrage AND (SELECT AVG(ra_wert) FROM rating) >= 3 mache, dann bekomme ich kein Ergebnis, da hier der Durchschnitt ›aller‹ Geschäfte ausgelesen wird. Ich bräuchte aber, wenn ich überprüfe ob ge_id=1 meinen Kriterien entspricht, den Durchschnittswert von ra_wert nur für die entsprechende ge_id (also 1).

Ich hoffe, du hast jetzt verstanden, was ich meine... ;)

Zur Verknüpfung: so etwas nennt man korrelierte Unterabfragen. Beispiele dafür gibt es im hiesigen Archiv massenhaft, zum Beispiel </archiv/2006/7/t133015/#m861544>.

Die korrelierten Unterabfragen hab ich auch schon gefunden, jedoch wusste ich nicht, was ich dann hier speziell angeben müsste.

Vielen Dank im Voraus,
Markus