Probleme mit GROUP, bzw. bei INSERT SELECT Spalten unterdruecken

Probleme mit GROUP, bzw. bei INSERT SELECT Spalten unterdruecken

am 16.04.2008 15:28:18 von Frank Arthur

MySQL 4.0.27
Folgender Query:

SELECT `id`
FROM `t5`
GROUP BY `id`
ORDER BY COUNT(*);

Gibt mir folgenden Fehler aus:
#1111 - Invalid use of group function

OK, ich könnte folgendes bentzen:

SELECT `id`, COUNT(*) AS `c`
FROM `t5`
GROUP BY `id`
ORDER BY `c`;

Aber das Problem ist, dass ich den SELECT in einem INSERT SELECT benutzen
will.

INSERT INTO `t6`
(`id`)
SELECT `id`
FROM `t5`
GROUP BY `id`
ORDER BY COUNT(*);

Da `t6` keine Spalte für das COUNT Ergebnis hat, kann ich den anderen
SELECT nicht benutzen, weil dann die Spaltenanzahl, natürlich, nicht
überein stimmt.

INSERT INTO `t6`
(`id`)
SELECT `id`, COUNT(*) AS `c`
FROM `t5`
GROUP BY `id`
ORDER BY `c`;

Hat jemand eine Idee?
Vielleicht kann man ja beim INSERT SELECT eine Spalte unterdrücken, die
COUNT-Spalte, aber da hab ich noch nichts gesehen.
MySQL 5.x macht keine Probleme bei dem ersten SELECT, aber leider kann
ich nicht updaten :-(

CREATE TABLE IF NOT EXISTS `t5` (
`id` int(10) unsigned NOT NULL,
`id2` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`,`id2`)
);
INSERT INTO `t5`
(`id`,`id2`)
VALUES (1,1)
, (1,2)
, (2,1);
CREATE TABLE IF NOT EXISTS `t6` (
`id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spalten unterdruecken

am 16.04.2008 15:41:43 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spaltenunterdruecken

am 16.04.2008 15:54:11 von Frank Arthur

> begin Frank Arthur schrieb:
>> MySQL 4.0.27
>> Folgender Query:
>>
>> SELECT `id`
>> FROM `t5`
>> GROUP BY `id`
>> ORDER BY COUNT(*);
>>
>> Gibt mir folgenden Fehler aus:
>> #1111 - Invalid use of group function

Andreas Kretschmer schrieb:

> Zu was soll einklich das ORDER im select oben dann nützlich sein? Diese
> Info geht doch eh den Bach runter.

Für ein LIMIT, dass im Original Query noch vorhanden ist.
Also so:

SELECT `id`
FROM `t5`
GROUP BY `id`
ORDER BY COUNT(*)
LIMIT 1

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spalten unterdruecken

am 16.04.2008 16:14:53 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spaltenunterdruecken

am 17.04.2008 08:04:59 von Frank Arthur

>>>> MySQL 4.0.27
>>>> Folgender Query:
>>>>
>>>> SELECT `id`
>>>> FROM `t5`
>>>> GROUP BY `id`
>>>> ORDER BY COUNT(*);
>>>>
>>>> Gibt mir folgenden Fehler aus:
>>>> #1111 - Invalid use of group function
>>
>>> Zu was soll einklich das ORDER im select oben dann nützlich sein?
>>> Diese Info geht doch eh den Bach runter.
>>
>> Für ein LIMIT, dass im Original Query noch vorhanden ist.
>
> Dann machst Du ein Subselect. Neuere MySQL-Versionen können das schon.

Nee, 4.0.27 kennt noch keine Subselects. Leider.
Und Update geht auch nicht, es ist ein Managed-Server.

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spalten unterdruecken

am 17.04.2008 08:12:43 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Probleme mit GROUP, bzw. bei INSERT SELECT Spaltenunterdruecken

am 17.04.2008 09:42:48 von Frank Arthur

> begin Frank Arthur schrieb:
>> Nee, 4.0.27 kennt noch keine Subselects. Leider.

Andreas Kretschmer schrieb:
> test=*# select 'Mitleid' as "Wenn ich mal Zeit habe...";

Hilft auch nicht.
Das Ergebnis hat immer eine Zeile und völlig falsche Daten. Damit kann
ich nix anfangen.