group by- Fehler

benno

Grünschnabel
Hi!

Ich hab da ein Problem mit der "group by"-Funktion. Vielleicht ist das ganz einfach, aber ich hab weder im Internet noch in den bisherigen Einträgen gefunden.

Es handelt sich um 3 Tabellen:

table1:
ID | Wert
----------------
34 | 50
66 | 100
58 | 400
43 | 670
Bei der ersten Tabelle handelt es sich einfach um eine ID der ein Preis zugeordnet ist.

table2:
ID | Name
----------------------
34 | München
66 | Wien
58 | Munich
43 | Vienna
Der gleichen ID ist in der zweiten Tabelle ein Name - in dem Fall eine Stadt zugeordnet.

table3:
Nr | Name_de | Name_en
-----------------------------------------
1 | München | Munich
2 | Wien | Vienna
Und die dritte Tabelle ist eigentlich nur eine Übersetzungstabelle.

Das Ganze sollte so ablaufen:
Die Kosten für eine Stadt sollten summiert werden. Meine Ausgabe sollte also so ausschauen:
München 450
Wien 770

Die Stadt wird in deutsch ausgegeben und dahinter die Summe der Preise für die jeweilige Stadt.

Ich habs schon mit folgendem sql-Statement versucht, aber ich komm nicht zum Ziel!

SELECT t3.Name_de, t1.ID, sum(t1.Wert)
FROM table1 t1, table2 t2, table3 t3
WHERE t1.ID = '[wert]'
AND t1.ID = t2.ID
AND (t2.Name like t3.Name_de OR t2.Name like t3.Name_en)
GROUP BY t1.ID

Da krieg ich immer die Fehlermeldung: "Die t3.Name_de-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in einer GROUP BY-Klausel enthalten ist."
Das ist mir dann auch klar und ich hab auch schon etliche andere Variationen ausprobiert, aber bin nicht zum gewünschten Ergebnis gekommen.
Wenn ich im GROUP BY- Teil das "t3.Name_de" hinzufüge, dann stimmt die Ausgabe nicht mehr: da unterscheidet er auch zwischen Munich und München, weil ja deutsch und englisch verscchieden sind(ach neee! :) )

Wollte auch schon die Tabellen ändern, aber das geht leider nicht!

Hat vielleicht von euch jemand ne Idee wie das SQL-Statement für die 3 Tabelle aussehen muss, damit ich die gewünschte Ausgabe kriege?

Sorry, dass es so viel zu lesen war, aber ich wollte euch mein Problem genau beschreiben -> in der Hoffnung, dass mir jemnad weiterhelfen kann!

mfg
benno
 
Zuletzt bearbeitet:
mal ein für deinen Fall ungetesteter Vorschlag:

Bau mal ein paar Inner Joins auf (auf die ID)

Dann bekommst du eine Tabelle, wo dann mal alle notwendigen Daten drinstehen.

Und in einer INNER JOIN Tabelle funktioniert (zumindest bei mir) die Funktion sum() :)

cu shutdown
 
Der Fehler wird 1. dadurch verursacht das keine "table" existiert, die müsste nämlich "table3" heissen.
Ausserdem müssen alle selektierten Felder, die keine Aggregatfunktion(sum,count..) sind in der Group By aufgezählt werden, bei dir fehlt dann GROUP BY t3.Name_de, t1.ID.

Ich ziehe auch JOINs vor. Allerdings sehe ich in deiner Tabellenstruktur keinerlei Fremdschlüssel, über die man die Beziehung darstellen kann.
So funktioniert weder deine Abfrage noch eine mit Joins.
 
Zurück