7 messages in com.mysql.lists.mysql-deRe: Count(*) > als Rowset
FromSent OnAttachments
IT Consulting 4 Visions GmbH06 Dec 2007 23:24 
Sebastian Mendel07 Dec 2007 00:49 
IT Consulting 4 Visions GmbH07 Dec 2007 01:38 
Georg Richter07 Dec 2007 02:01 
Sebastian Mendel07 Dec 2007 03:07 
Sebastian Mendel07 Dec 2007 03:10 
IT Consulting 4 Visions GmbH07 Dec 2007 08:42 
Subject:Re: Count(*) > als Rowset
From:IT Consulting 4 Visions GmbH (it@4-visions.info)
Date:12/07/2007 01:38:33 AM
List:com.mysql.lists.mysql-de

Am Freitag, den 07.12.2007, 09:49 +0100 schrieb Sebastian Mendel:

IT Consulting 4 Visions GmbH schrieb:

toller name ...

Ich find den gar nicht so toll...

Moin Liste,

ich habe hier heute ne ziemliche Merkwürdigkeit beobachten können. Weiß jetzt nicht, ob das evtl. an mir oder an der Query liegt. Folgende Query:

nicht dein ernst, oder? du haust hier zwei Textbatzen hin die die, die dir helfen wollen erstmal in irgendeine Form bringen müssen um zu sehen was du eigentlich machen willst ...

Ok, mag blöd aussehen, wusste halt grad mal nur nicht, wie ich das darstellen sollte.

Zum Problem:

Ich möchte in der ersten Query wissen, wie viele Datensätze es gibt!

Im zweiten Query möchte ich die Datensätze holen, die ich im ersten Query gezählt habe! (Fehlt halt nur das LIMIT und OFFSET!)

Das Group By ist dort mitbei, weil ich ansonsten Datensättze doppelt bekommen, die ich aber nur einmal haben möchte.

Was ich nur an den beiden Ergebnissen nicht verstehe ist, dass in der ersten Query in cnt eine 4 steht. Und wenn ich die zweite Query absetze, bekomme ich aber nur einen Datensatz zurück (was auch so korrekt ist, weil ich ja keinen doppelten Datensätze haben möchte.)

Hoffe das das diesmal verständlicher rüber kam! :)

Gruß SR

SELECT COUNT(*) cnt FROM cap_clients c INNER JOIN cap_produkte p ON (p.produkte_id = c.clients_produkte_id) INNER JOIN cap_user u ON (p.produkte_id = u.user_produkte_id) LEFT JOIN cap_statis s ON (s.statis_clients_id = c.clients_id AND s.statis_produkte_id = p.produkte_id) WHERE 'gelb' = (SELECT s2.statis_value FROM cap_statis AS s2 WHERE s2.statis_produkte_id = p.produkte_id AND s2.statis_clients_id = c.clients_id ORDER BY s2.statis_created_at DESC LIMIT 1) GROUP BY c.clients_id

Liefert mir als cnt = 4

Setz ich aber diese Query:

SELECT * FROM cap_clients c INNER JOIN cap_produkte p ON (p.produkte_id = c.clients_produkte_id) INNER JOIN cap_user u ON (p.produkte_id = u.user_produkte_id) LEFT JOIN cap_statis s ON (s.statis_clients_id = c.clients_id AND s.statis_produkte_id = p.produkte_id) WHERE 'gelb' = (SELECT s2.statis_value FROM cap_statis AS s2 WHERE s2.statis_produkte_id = p.produkte_id AND s2.statis_clients_id = c.clients_id ORDER BY s2.statis_created_at DESC LIMIT 1) GROUP BY c.clients_id

ab, bekomme ich 1 Datensatz...

ja, genau, wie der Obere 1 Datensatz geliefert hat, warum sollte das gleiche Query eine unterschiedliche Anzahl an Datensätzen liefern?

Jemand ne Idee, woran das liegen könnte?

ja, ja weil du es geschrieben hast,

aber, vermutlich ist das was du willst zu erreichen in dem du im zweiten Query das GROUP BY weg lässt

(ist nicht so unfreundlich gemeint wie es vielleicht klingt)

Schon okay, bin den etwas rauheren Ton, von anderen Listen gewohnt! :D