mysql abfrage
Rüdiger
- datenbank
hallo an alle
hab mal eine mysql frage bin da nicht so fit
Der Schwabe hat vor einigen wochen mal das gleiche gepostet
und so sollte es eigentlich gehn laut dem posting
bei mir allerdings nicht!!!
bekomme von mysql immer diese fehlermeldung:
Unknown column 'PI' in 'field list'
was mache ich falsch??
SELECT Name, sum(Spiel) AS SP , sum(Tore) AS TO, AVG(TO / SP) AS neu FROM Spiele GROUP BY Name ORDER BY neu DESC
danke und grüße Rüdiger
Huhu Rüdiger
Unknown column 'PI' in 'field list'
Dein SQL-Statement enthält eine unbekannte Spalte PI
SELECT Name, sum(Spiel) AS SP , sum(Tore) AS TO, AVG(TO / SP) AS neu FROM Spiele GROUP BY Name ORDER BY neu DESC
mmm, in diesem SELECT gibt es kein PI, finde also zunächst
mal heraus wo genau der Fehler auftritt.
Viele Grüße
lulu
SELECT Name, sum(Spiel) AS SP , sum(Tore) AS TO, AVG(TO / SP) AS neu FROM Spiele GROUP BY Name ORDER BY neu DESC
Hallo Rüdiger,
dem was lulu sagte, würde ich noch hinzufügen, daß man es vermeiden sollte, reservierte Begriffe als Spaltenbezeichner zu nutzen - in Deinem Fall "TO". Besser sähe die Query zum Beispiel so aus:
SELECT Name, SUM(Spiel) AS SumSpiel , SUM(Tore) AS SumTore, AVG(TO/SP) AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY neu DESC
HTH Robert
Wenn, dann richtig:
SELECT Name, SUM(Spiel) AS SumSpiel , SUM(Tore) AS SumTore, AVG(SumTore/SumSpiel) AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY AvgToreProSpiel DESC
hallo lulu und Robert
SELECT Name, SUM(Spiel) AS SumSpiel , SUM(Tore) AS SumTore, AVG(TO/SP) AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY neu DESC
hab das jetzt mal umgeschrieben
der fehler war von einer anderen abfrage die allerdings das gleiche ziel hat (sorry mein fehler). jetzt aber die richtige fehlermeldung:
Unknown column 'SumTore' in 'field list'
und die abfrage dazu:
SELECT Name, sum(Spiele) AS SumSpiele , sum(Tore) AS SumTore, AVG(SumTore / SumSpiele) AS AVGToreProSpiel FROM Spiele GROUP BY Name ORDER BY AVGToreProSpiel DESC
hoffe jetzt ists für die helfenden klarer
grüße Rüdiger
Hi Rüdiger,
der fehler war von einer anderen abfrage die allerdings das gleiche ziel hat (sorry mein fehler). jetzt aber die richtige fehlermeldung:
Unknown column 'SumTore' in 'field list'
und die abfrage dazu:
SELECT Name, sum(Spiele) AS SumSpiele , sum(Tore) AS SumTore, AVG(SumTore / SumSpiele) AS AVGToreProSpiel FROM Spiele GROUP BY Name ORDER BY AVGToreProSpiel DESC
das Problem liegt wohl in der Schachtelung der Aggregatfunktionen. Es machte auch wenig Sinn, die AVG()-Aggregation auf alle Spaltensummen der jeweiligen Gruppen auszuführen. Den Durchschnittswert der Tore pro Spiele liefert Dir der Quotient aus SumTore und SumSpiele bilden - auf dieses Detail habe ich eben nicht geachtet.
So könnte es gehen:
SELECT Name, SUM(Spiele) AS SumSpiele, SUM(Tore) AS SumTore, SumTore/SumSpiele AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY AVGToreProSpiel DESC
HTH Robert
Sorry, wenn ich immer zweimal antworte, aber das blöde Forums-Monster bietet mir keine Vorschau meiner Antworten an, und ich sehe die Fehler immer erst, wenn es zu spät ist...
SELECT Name, SUM(Spiele) AS SumSpiele, SUM(Tore) AS SumTore, SumTore/SumSpiele AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY AVGToreProSpiel DESC
Womöglich hat MySQL ein Problem mit der Verwendung von Spaltenaliasen (oder was ist der Plural von Alias?) in anderen Spaltenausdrücken. Dann muß man - abhängig vom Optimierer mit Performanceverlust - mit mehrfacher Aggregation arbeiten:
SELECT Name, SUM(Spiele) AS SumSpiele, SUM(Tore) AS SumTore, SUM(Tore)/SUM(Spiele) AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY 3 DESC
HTH Robert
hallo Robert
ohne AVG, das wars
vielen, vielen dank für Deine hilfe
SELECT Name, SUM(Spiele) AS SumSpiele, SUM(Tore) AS SumTore, SUM(Tore)/SUM(Spiele) AS AvgToreProSpiel
FROM Spiele
GROUP BY Name
ORDER BY 3 DESC
HTH Robert
grüße Rüdiger
ohne AVG, das wars
vielen, vielen dank für Deine hilfe
Hi Rüdiger,
vielen Dank, daß ich etwas über die Aggregatfunktionen von MySQL lernen konnte. Aus anderen SQL-Welten kommend und ohne jegliche MySQL-Erfahrung bringt mich sowas weiter; mal wieder ein schönes Beispiel für Win-Win-Situationen in Foren!
Gruß
Robert