Mailinglisten-Archive |
Sebastian Tobias Mendel genannt Mendelsohn schrieb: >>Ich kann im HAVING auch auf COUNT(XXX) zugreifen, ohne diese im >>SELECT-Teil zu haben. > > > was auch immer dich das glauben lässt ... > > "The HAVING clause can refer to any column or alias named in the > select_expression." > > http://www.mysql.com/doc/en/SELECT.html > Wie unten zu sehen ist, benoetigt man zumindestens fuer COUNT keine Angabe im SELECT Teil. Leider habe ich mich dadurch auch auf die funktionsweise wie in Sybase verlassen, die diese Einschraenkung nicht hat. Aber ansonsten hast du Recht. Aufgrund eines Schreibfehlers den ich hatte, funktionierte COUNT(DISTINCT s1.k), wohingegen die richtige Schreibweise von COUNT(DISTINCT s2.k) mit einer Fehlermeldung abbricht, auch wenn man es im SELECT angibt. Die Loesung liegt in der Angabe des ALIAS namens. Danke. DROP TABLE IF EXISTS du; CREATE TABLE du ( sId INT NOT NULL, vlId INT NOT NULL, k INT NOT NULL, PRIMARY KEY (sId, vlId), INDEX(sId), INDEX(vlId) ); INSERT INTO du VALUES( 1, 1, 1 ),( 1, 2, 2 ),( 1, 3, 3 ),( 1, 4, 4 ),( 1, 5, 5 ); INSERT INTO du VALUES( 2, 1, 1 ),( 2, 2, 2 ),( 2, 3, 3 ),( 2, 4, 3 ),( 2, 5, 3 ); INSERT INTO du VALUES( 3, 1, 3 ),( 3, 2, 4 ),( 3, 3, 4 ),( 3, 4, 4 ),( 3, 5, 4 ); INSERT INTO du VALUES( 4, 1, 1 ); INSERT INTO du VALUES( 5, 1, 1 ),( 5, 2, 2 ); INSERT INTO du VALUES( 6, 1, 1 ),( 6, 2, 2 ),( 6, 3, 2 ); INSERT INTO du VALUES( 7, 1, 1 ),( 7, 2, 2 ),( 7, 3, 2 ),( 7, 4, 2 ),( 7, 5, 3 ); ## funktioniert SELECT s1.sId, s1.k FROM du s1, du s2 WHERE s1.sId = s2.sId AND s1.k <= s2.k GROUP BY s1.sId, s1.k HAVING COUNT(s2.k) < 3 -- Software-Tomography - we make the invisible visible! Jan Kuehl Software-Tomography GmbH Karlstr.7 D-03044 Cottbus e-Mail: jan.kuehl at software-tomography.com http://www.software-tomography.com Phone: +49 (0355) 4945077 ---------------------------- -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive