Seite 1 von 1

#1305 - FUNCTION cont468.substr does not exist

Verfasst: Di 21. Nov 2006, 18:17
von busdriver
Hallo Forum,

ich suche mir in einem Modul (Statistikauswertung) Daten mit folgenden Select zusammen:

Code: Alles auswählen

SELECT ip_text, count(1) as visits FROM con_sxstatistiken WHERE substr(datum, 1, 6) = '200611' GROUP BY ip_text HAVING visits>'3' ORDER BY count(1) desc
Das Statement beschert mir einen Fehler im Error.log:

Code: Alles auswählen

[20-Nov-2006 17:17:44] Invalid SQL: SELECT ip_text, count(1) as visits FROM con_sxstatistiken WHERE substr(datum, 1, 6) = '200611' GROUP BY ip_text HAVING visits>'3' ORDER BY count(1) desc
[20-Nov-2006 17:17:44] next_record called with no query pending.

Wenn ich jetzt das Statement nehme und im SQl-Window von mySQL-Admin starte erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

#1305 - FUNCTION cont468.substr does not exist 
Kann mir wer weiterhelfen?

lg
rg

Verfasst: Di 21. Nov 2006, 23:53
von HerrB
Mmh, die count(1)-Syntax kenne ich nicht. Ich würde sowas wie SELECT ip_text, count(*) as visits FROM ... ORDER BY visits desc

Zumindest bei Oracle kann man WHERE und HAVING nicht mischen:
... FROM ... GROUP BY ip_text HAVING visits > 3 AND substr(datum, 1, 6 ...

Aber ich bin da auch ein wenig eingerostet, ohne Gewähr.

Gruß
HerrB

Verfasst: Mi 22. Nov 2006, 11:09
von busdriver
Sg. Herr B,

das mit Oracle war der passende Anstoß. Was in Oracle SUBSTR ist ist in MySql SUBSTRING.

Count(*) gegenüber Count(1) hat mir mein DBA empfohlen -> ist ageblich performanter.

Die richtige Syntax meines Statements:

Code: Alles auswählen

SELECT ip_text, count( 1 ) AS visits
FROM con_sxstatistiken
WHERE substring( datum, 1, 6 ) = '200611'
GROUP BY ip_text
HAVING visits >3
ORDER BY visits DESC
lg
rg