Problem mit Mysql Abfrage über mehrere Tabellen

psifactory

Erfahrenes Mitglied
Hallo,

folgende Problematik:

Ich habe 2 verschiedene Tabellen

Tabelle veranstaltungen
Code:
+ id + datum      +
| 1  | 2012-03-03 |
| 2  | 2012-04-03 |

Tabelle umsatz
Code:
+ id + va_id + Umsatz  + bereich_id +
| 1  | 1     | 1243,33 | 1          |
| 2  | 1     | 122,33  | 1          |
| 3  | 1     | 232,44  | 2          |
| 4  | 2     | 23,33   | 1          |
| 5  | 2     | 3443,33 | 1          |
| 6  | 2     | 222,22  | 2          |

Ich muss nun eine Abfrage starten die mir das Datum der veranstaltung & die summierten umsätze aber nur aus dem Bereich mit der id 1 ausgibt.

Folgendes habe ich probiert, was mir aber immer das gleiche Datum ausgibt:

Code:
SELECT v.id, v.datum, u.va_id, sum(u.umsatz) AS umsatzsumme, u.bereich_id
FROM umsatz u, veranstaltungen v
WHERE u.bereich_id =1
GROUP BY u.va_id
 
Problem gelöst ;)
Wen´s interessiert
Code:
SELECT v.id, v.datum, v.name, u.va_id, sum( u.umsatz ) AS umsatzsumme, u.bereich_id
FROM umsatz u, veranstaltungen v
WHERE u.bereich_id =1 && u.va_id = v.id
GROUP BY u.va_id
 
Dein SQL-Staement hat ganz klare Syntaxfehler. Leider akzeptiert MySQL dies und verarbeitet es. Mit Oracle ginge das ganz klar nicht.

Und zwar:
Du defnierst einen GROUP BY auf u.va_id. Zudem eine Group-Funktion SUM() auf u.umsatz. Für alle anderen Felder im SELECT-Bereich ist nicht weiter definiert wie sie sich in der Gruppierung verhalten sollen. MySQL geht einfach mal davon aus, dass nach diesen ebenfalls gruppiert wird. Im Endeffekt verarbeitet MySQL dein Query also so:
SQL:
SELECT 
    v.id, 
    v.datum, 
    v.name, 
    u.va_id, 
    SUM( u.umsatz ) AS umsatzsumme, 
    u.bereich_id
FROM 
    umsatz u, 
    veranstaltungen v
WHERE 
    u.bereich_id =1 
    AND u.va_id = v.id
GROUP BY 
    v.id, 
    v.datum, 
    v.name, 
    u.va_id, 
    u.bereich_id;

Ich rate dir an, den GROUP BY Teil immer vollständig zu führen. Man erkennt Fehler leichter und es ist kompatibler zu anderen DBMS
 
Zuletzt bearbeitet von einem Moderator:
Zurück