#1305 - FUNCTION cont468.substr does not exist

Gesperrt
busdriver
Beiträge: 28
Registriert: Fr 28. Okt 2005, 15:37
Wohnort: Wien
Kontaktdaten:

#1305 - FUNCTION cont468.substr does not exist

Beitrag von busdriver » Di 21. Nov 2006, 18:17

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
****************************************
Achtung bin Contenido-AZUBI;-)! Also Bitte Nachsicht walten lassen. Danke.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 21. Nov 2006, 23:53

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

busdriver
Beiträge: 28
Registriert: Fr 28. Okt 2005, 15:37
Wohnort: Wien
Kontaktdaten:

Beitrag von busdriver » Mi 22. Nov 2006, 11:09

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
****************************************
Achtung bin Contenido-AZUBI;-)! Also Bitte Nachsicht walten lassen. Danke.

Gesperrt