Probleme mit SUM und Group By

Hallo,

ich habe diverse Tabellen, die über ihre IDs miteinander verknüpft sind. In einem SQL-Befehl versuche ich nun, einige der Felder auszulesen. Das pure Auslesen klappt auch soweit ganz gut, nur möchte ich gerne einen Wert summieren. Das funktioniert bei mir nicht. Irgendwas mache ich falsch, ich schätze es liegt am Group By, aber ich habe nichts passendes finden können, damit es funktioniert.

Hier mein bisheriger, funktionierender Befehl:

SELECT
Tour.TourID,
Tour.Name,
Times.Time,
Languages.Language,
Guide.GuideID,
Booking.AmountSeats
FROM
Tour, Times, Languages, Booking, Guide
WHERE
Tour.LanguageID = Languages.LanguageID
AND Times.TimeID = Tour.TimeID
AND Tour.GuideID = Guide.GuideID
AND Booking.Date = ‚" + today + "‘
AND Booking.TourID = Tour.TourID
AND Canceled = ‚0‘

Jetzt hätte ich gerne anstatt Booking.AmountSeats etwas wie SUM(Booking.AmountSeats). Ich habe es dabei versucht mit GROUP BY Booking.TourID, oder auch mit einem Group By über alle vorher selektierten Felder, aber nichts klappt. Was mache ich falsch?

Vielen Dank für die Hilfe im Voraus!
Katja

Hallo Katja,

SELECT
Tour.TourID,
Tour.Name,
Times.Time,
Languages.Language,
Guide.GuideID,
Booking.AmountSeats
FROM
Tour, Times, Languages, Booking, Guide
WHERE
Tour.LanguageID = Languages.LanguageID
AND Times.TimeID = Tour.TimeID
AND Tour.GuideID = Guide.GuideID
AND Booking.Date = ‚" + today + "‘
AND Booking.TourID = Tour.TourID
AND Canceled = ‚0‘

ich bin mir nicht ganz sicher, ob ich Dich richtig verstanden habe.

In welchem SQL-Dialekt soll die Abfrage formuliert werden?

Ich bin mir relativ sicher, dass du nicht die Funktion SUM() sondern die Funktion COUNT() benötigst.

Ich weiß zwar nicht, wie es in anderen Dialekten ist, aber in Oracle und MySQL bin ich mir relativ sicher, dass du das alles mit Inner Joins machen musst. Außerdem bezweifle ich, dass er die Datensätze aus den verschiedenen Tabellen richtig zuordnen kann.

Liebe Grüße
Woosh

Moin, Katja,

immoment raffe ich nicht ganz, was Du vorhast. Erstelle doch erstmal eine View, mit der die 5 Tabellen zusammengeführt werden, und setz die Summenbildung auf die View.

Gruß Ralf

Danke für die Antwort.

Ich arbeite mit SQL Server 2005 Management Studio Express, aber die Abfragen kommen aus C#, von wo aus ich auf die Datenbank zugreife und mir ein DataSet zusammenbaue.

Ich werde es mal mit InnerJoins versuchen. Ehrlich gesagt hatte ich mich auch schon gewundert, dass man sowas nicht braucht, aber wie gesagt, der hier beschriebene Befehl funktionierte auch so.

Ich melde mich mit dem Ergebnis wieder!

Mit dem MS-Server habe ich bisher noch nicht gearbeitet. Werde es aber einfach mal austesten :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich bin mir nicht ganz sicher, ob ich Dich richtig verstanden
habe.

In welchem SQL-Dialekt soll die Abfrage formuliert werden?

Ich bin mir relativ sicher, dass du nicht die Funktion SUM()
sondern die Funktion COUNT() benötigst.

Ich weiß zwar nicht, wie es in anderen Dialekten ist, aber in
Oracle und MySQL bin ich mir relativ sicher, dass du das alles
mit Inner Joins machen musst. Außerdem bezweifle ich, dass er
die Datensätze aus den verschiedenen Tabellen richtig zuordnen
kann.

Liebe Grüße
Woosh

Also, das mit dem SUM sollte schon die richtige Funktion sein; COUNT würde Dir die Anzahl an Werten zählen, nicht aber summieren.

Für mich liegt der Fehler vielmehr darin, dass Du überhaupt versuchst zu gruppieren.
Wenn ich die Tabelle richtig verstanden habe, dürftest Du eigtl nur eine Spalte mit einer Zeile (nämlich der Summe) als Ergebnis geliefert bekommen.

Ob Du nun INNER JOINS nimmst oder eine Reihe von WHERE Klauseln, ist letztlich dürfte auch egal sein. INNER JOINS sind aber sicherlich die modernere Variante.

Hoffe, dass ich nicht allzu falsch mit meinen Vermutungen liege und es Dir weiterhilft :wink:

LG
Sebastian

Juchu! Es geht jetzt!
Tatsächlich mit Inner Join. Ich hätte das allerdings nie so seltsam gemacht, aber ich habe einen Abfrage-Designer gefunden, mit dem man die Befehle quasi zusammen klicken kann. Dann musste ich nur noch etwas anpassen und es funktioniert jetzt! Danke für den Tip!

Kein Problem :wink:
Mich interessiert die Abfrage allerdings noch. Postest du sie bitte?

LG
Woosh

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also, das mit dem SUM sollte schon die richtige Funktion sein;
COUNT würde Dir die Anzahl an Werten zählen, nicht aber
summieren.

Das kommt ganz darauf an, welche Daten in welchen Datensätzen sind. Kann man aus Katjas post nicht ganz rauslesen. Ich vermutete eher COUNT, da ich dachte, die belegten Sitze resultieren aus der Anzahl von bestimmten Datensätzen. Keine Ahnung, ob ich das falsch verstanden habe :smiley: