5 messages in com.mysql.lists.mysql-deRe: SQL-Ausdruck für "Stringzerlegung"
FromSent OnAttachments
Ulrich Kretschmer13 Aug 2005 15:54 
Rene Fertig14 Aug 2005 10:30 
Ulrich Kretschmer15 Aug 2005 15:52 
Rene Fertig16 Aug 2005 13:29 
Sebastian Mendel16 Aug 2005 14:43 
Subject:Re: SQL-Ausdruck für "Stringzerlegung"
From:Sebastian Mendel (lis@sebastianmendel.de)
Date:08/16/2005 02:43:34 PM
List:com.mysql.lists.mysql-de

Ulrich Kretschmer schrieb:

Am Sonntag, 14. August 2005 19:31 schrieb Rene Fertig:

Was sonst eine For-Schleife macht, macht dir in SQL eine Zahlen-Tabelle:

create table Zahlen ( Z int unsigned); insert into Zahlen values (1),(2),(3),(4); (wenn du mehr Vornamen hast, brauchst du halt mehr Zahlen)

Dann kannst du mit SUBSTRING_INDEX das Feld aufspalten:

select distinct Nn, SUBSTRING_INDEX(SUBSTRING_INDEX(Vn,' ',Z),' ',-1) as Vname from Namen, Zahlen;

Hallo, vielen Dank! meine vorläufig endgültige Abfrage schaut jetzt so aus:

SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(p.firstname,' ',h.helpnumber),' ',-1) AS Vorname FROM tng_people AS p, tng_local_helpnumbers AS h ORDER BY Vorname;

Eine Variante der Abfrage für die Auswertung der Häufigkeit:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(p.firstname,' ',h.helpnumber),' ',-1) AS Vorname, COUNT(*) AS Anzahl FROM tng_people AS p, tng_local_helpnumbers AS h GROUP BY Vorname ORDER BY Anzahl DESC;

Was glaubst du eigentlich hiermit zu zählen? Die Häufigkeit der Vornamen jawohl bestimmt nicht ...

Wenn du in der vorherigen Abfrage mal das DISTINCT weg läst wirst du sehen was du wirklich zählst ...

wenn dann schon eher so:

SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( p.firstname, ' ', h.nr ), ' ', -1 ) AS Vorname, COUNT( DISTINCT id ) FROM tng_people AS p, ( SELECT 1 AS nr UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ) AS h GROUP BY Vorname

www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet