Probleme mit COUNT in einer Select abfrage

Probleme mit COUNT in einer Select abfrage

am 08.07.2007 11:12:41 von Maria Sudderman

Das funktioniert,

$sql = "select id,titel,date from tabelle WHERE date BETWEEN
DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND '".date('Y-m-d')."' ";

$result = mysql_query($sql);
while ($ausgabe = mysql_fetch_object($result)) {


doch jetzt wo ich die Titel zähle bekomme ich einen Error und ich weis
wirklich nicht warum "Warning: mysql_fetch_object(): supplied argument is
not a valid MySQL result resource in"


$sql = "select id,titel,count( titel)AS anzahl, date from tabelle GROUP BY
titel WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
'".date('Y-m-d')."' ";

$result = mysql_query($sql);
while ($ausgabe = mysql_fetch_object($result)) {


Maria

Re: Probleme mit COUNT in einer Select abfrage

am 08.07.2007 11:21:37 von Gregor Kofler

Maria Sudderman meinte:
> Das funktioniert,
>
> $sql = "select id,titel,date from tabelle WHERE date BETWEEN
> DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND '".date('Y-m-d')."' ";
>
> $result = mysql_query($sql);
> while ($ausgabe = mysql_fetch_object($result)) {
>
>
> doch jetzt wo ich die Titel zähle bekomme ich einen Error und ich weis
> wirklich nicht warum "Warning: mysql_fetch_object(): supplied argument is
> not a valid MySQL result resource in"
>
>
> $sql = "select id,titel,count( titel)AS anzahl, date from tabelle GROUP BY
> titel WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
> '".date('Y-m-d')."' ";
>
> $result = mysql_query($sql);
> while ($ausgabe = mysql_fetch_object($result)) {
>

Die WHERE-Klausel gehört *vor* die GROUP BY-Klausel. Oder du verwendest
HAVING. "Where" filtert vor der Gruppierung, "Having" nachher.

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Probleme mit COUNT in einer Select abfrage

am 08.07.2007 15:00:08 von Niels Braczek

Maria Sudderman schrieb:

> $result =3D mysql_query($sql);

Mit einer minimalen Fehlerbehandlung ermöglichst du MySQL, dir zu sagen=
,
wo's hakt:

$result =3D mysql_query($sql) or die($sql.'
'.mysql_error());

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Probleme mit COUNT in einer Select abfrage

am 09.07.2007 16:06:11 von Ben Dorato

This is a multi-part message in MIME format.
--------------040104000901050803030904
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Maria Sudderman schrieb:
> $sql = "select id,titel,count( titel)AS anzahl, date from tabelle GROUP BY
> titel WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
> '".date('Y-m-d')."' ";
>
in o.g. Beispiel stimmen die Select Spalten auch nicht mit den
gewünschten Aliasen überein.
Natürlich hat Gregor auch recht.
Ich denke mal so sollte das statement funktionieren:

SELECT id,titel,COUNT(titel)
AS alias_id, alias_titel, alias_anzahl
FROM tabelle
WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
'".date('Y-m-d')."'
GROUP BY titel

so long, Ben ;:O)

--------------040104000901050803030904
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit







Maria Sudderman schrieb:



$sql = "select id,titel,count( titel)AS anzahl, date from tabelle GROUP BY
titel WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
'".date('Y-m-d')."' ";


in o.g. Beispiel stimmen die Select Spalten
auch nicht mit den gewünschten Aliasen überein.

Natürlich hat Gregor auch recht.

Ich denke mal so sollte das statement funktionieren:




SELECT id,titel,COUNT(titel)

  AS alias_id, alias_titel, alias_anzahl 

FROM tabelle

WHERE date BETWEEN DATE_SUB('".date('Y-m-d')."',INTERVAL 1 month) AND
'".date('Y-m-d')."'

GROUP BY titel



so long, Ben ;:O)





--------------040104000901050803030904--

Re: Probleme mit COUNT in einer Select abfrage

am 09.07.2007 16:24:34 von Claus Reibenstein

Ben Dorato schrieb:

> Content-Type: text/html; charset=ISO-8859-1

Bitte kein HTML in den Newsgroups.

Gruß. Claus