PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   SQL-Abfrage mit sum() AS und Ausgabe aller Daten (http://www.selfphp.de/forum/showthread.php?t=9764)

nivram 14.02.2005 20:26:54

SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Nabend zusammen,
wie kann ich folgende Query ausgeben lassen:

SELECT * AS query, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal ORDER BY datum DESC, gid DESC

Das Sternchen sind alle Daten die per-while-Schleife ausgegeben werden sollen, sum(anzahl) AS gesamtpic ist die Anzahl der Bilder und sum(kom) AS gesamtkom ist die Anzahl der Kommentare.

Wie kann ich das alles in einer Abfrage machen?
Ich weiss nit wie das geht... Aber es muss doch in einer Abfrage gehen!


Gruß, nivRam

xabbuh 14.02.2005 20:36:22

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Statt * listest du hier - komma separiert - alle Spalten auf, die du aus der Datenbank lesen möchtest.

feuervogel 14.02.2005 20:40:47

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
> * AS query,

wie können _mehrere_ spalten _einen_ alias haben?

nivram 14.02.2005 20:41:16

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Ähhmm... etwa so:

SELECT gid,titel,datum AS query, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal ORDER BY datum DESC, gid DESC

Das veranleitet mySQL immer noch zu einer Fehlermeldung.
Ich möchte gid, titel und datum in eine while-Schleife ausgeben und gesamtkom und gesamtpic nur ein einziges mal!

Wie gehtn das?

Edit:

Oder meint ihr so:

SELECT gid AS gid, titel AS titel, datum AS datum, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal ORDER BY datum DESC, gid DESC

Es gibt aber immer noch einen Fehler!

feuervogel 14.02.2005 20:55:34

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Zitat:

Zitat von nivram
Ähhmm... etwa so:

SELECT gid,titel,datum AS query, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal ORDER BY datum DESC, gid DESC

aha, das ist aber was anderes als * AS bla. bei dem statement wird der alias für "datum" verwendet.
Zitat:

Das veranleitet mySQL immer noch zu einer Fehlermeldung.
wie gut, dass ich hier ne glaskugel habe und des hellsehens mächtig bin.
Zitat:

Oder meint ihr so:

SELECT gid AS gid, titel AS titel, datum AS datum, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal ORDER BY datum DESC, gid DESC

Es gibt aber immer noch einen Fehler!
siehe oben.

edit: folgendes hast du dir durchgelesen:

http://www.selfphp.com/forum/showthread.php?t=8195

?

nivram 14.02.2005 20:57:39

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Ähhh... weiss nich was du jez von mir willst..

Aber mysql_error() gibt mir folgenden Fehler aus:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Wie kann ich das denn ändern, wenn ich trotzdem alle Datensätze haben will?!?!

xabbuh 14.02.2005 22:18:17

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Zitat:

Zitat von nivram
Wie kann ich das denn ändern, wenn ich trotzdem alle Datensätze haben will?!?!

GROUP BY verwenden:
SELECT gid,titel,datum AS query, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal GROUP BY gid ORDER BY datum DESC, gid DESC

feuervogel 14.02.2005 22:19:14

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
Zitat:

Zitat von nivram
Ähhh... weiss nich was du jez von mir willst..

Aber mysql_error() gibt mir folgenden Fehler aus:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Wie kann ich das denn ändern, wenn ich trotzdem alle Datensätze haben will?!?!

genau die fehlermeldung wollte ich haben, danke.

wenn du neben einer summe (oder max()/min()/count()) noch spalten auswählst, braucht das statement eine group-by-klausel am ende. das sagt dir die fehlermeldung. also füge noch group by gid an und schau was bei rauskommt.

nivram 15.02.2005 14:59:15

AW: SQL-Abfrage mit sum() AS und Ausgabe aller Daten
 
OK, das Abfragen klappt soweit.

SELECT *, sum(kom) AS gesamtkom, sum(anzahl) AS gesamtpic FROM bw_gal GROUP BY gid ORDER BY datum DESC, gid DESC

Wie bekomme ich aber nun gesamtkom und gesamtpic ausgegeben?

Die Daten gebe ich so aus:

while($data = mysql_fetch_object($query)){
.....
}

Aber gesamtpic und gesamtkom will ich nur darunter ein einziges Mal ausgeben!

c4 15.02.2005 15:42:11

Was hindert Dich daran die beiden nach Abschluss der Schleife auszugeben??


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:38:16 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.