sql sortieren nach Domain Stringpart

Ronald Nickel

Legendäres Mitglied
Ein herzliches Hallo an die SQL.Front

Ich habe Referer in eine Datenbank geschrieben.
Beispiel
http://www. eine domain.de/eine Seite.php...
http://www. eine domain.de/eine weitereSeite.php...
http://www. eine domain.de/eine schöneSeite.php...
http://www. eine domain.de/eine selteneSeite.php...
http://www. eine weitere domain.de/eine Seite.php...
http://www. eine weitere domain.de/eine wunderweitereSeite.php.
http://www. eine weitere domain.de/eine komisch.php....
http://www. eine weitere domain.de/eine index.php..
http://www. eine weitere domain.de/eine x-index.php..

Nun möchte ich die Zugiffe jeder Referer-Domain zählen
Ergebnis sollte bei diesem Beispiel sein:
http://www. eine domain.de = 4
http://www. eine weitere domain.de=5

Kann mir jemand schreiben wie ich die SQL-Abfrage heirfür schreibe. Ich denke mal das ist was mit COUNT und GROUP
Meine Versuche waren kläglich ....(schäm)

Gruß Ronny
 
QUOTE (Marcus Tullius @ Mi 7.01.2009, 13:15) Hallo Ronny


CODE SELECT referrer, COUNT(*) FROM table GROUP BY referrer


Viele Grüsse

Marcus

Das liefert nicht das gewünschte Ergebnis.
Es soll nicht nach Links, sondern ausschließlich nach den Domains gruppiert werden.

Ich bin mir nicht ganz sicher, aber


CODE SELECT SUBSTRING_INDEX(referer, '/', 3) as referer, COUNT(*) as anzahl FROM table GROUP BY SUBSTRING_INDEX(referer, '/', 3)


SUBSTRING_INDEX gibt den Teil eines Strings vom Anfang bis zumx-ten Auftreten des Trennzeichens zurück.
Als Trennzeichen hab ich hier das / gesetzt.
Da die tatsächlichen (Unter)-links nach dem dritten / beginnen, sollte die o.a. Abfrage dir statt http://www.meinedomain.de/irgendwas.html nur ein einfaches http://www.meinedomain.de zurück geben.

Versuch es einfach mal
wink.gif
 
@connectR

Vielen Dank für Deine Korrektur, da habe ich wohl zu ungenau gelesen
wink.gif


Nun nur noch ein kleiner Optimierungsvorschlag an Deinem SQL-Statement:

CODE SELECT SUBSTRING_INDEX(referer, '/', 3) as referer, COUNT(*) as anzahl FROM table GROUP BY referer


 
QUOTE (Marcus Tullius @ Mi 7.01.2009, 13:45) @connectR

Vielen Dank für Deine Korrektur, da habe ich wohl zu ungenau gelesen
wink.gif


Nun nur noch ein kleiner Optimierungsvorschlag an Deinem SQL-Statement:


CODE SELECT SUBSTRING_INDEX(referer, '/', 3) as referer, COUNT(*) as anzahl FROM table GROUP BY referer


Ich bin mir fast ziemlich sicher, das auch das nicht funktionieren wird.
Das Datenbankfeld heißt "referer", den Teilstring nennen wir "referer" und gruppieren nach "referer".
MySql wird dann nach dem Datenbankfeld sortieren, nicht nach dem Teilstring.
Und das liefert wieder falsche Ergebnisse.

Also wenn dann

CODE
SELECT SUBSTRING_INDEX(referer, '/', 3) as referer2, COUNT(*) as anzahl FROM table GROUP BY referer2



Oder?
 
Zurück
Oben