Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pogrupowanie domen
Forum PHP.pl > Forum > Bazy danych > MySQL
DNMX
Mam bazę danych z domenami internetowymi. Rekordy typu:

domenka.pl
inna.domena.eu
subdomena.domeny..net
jeszcze.dluzsza.nazwa.com

Na podstawie tego chcialbym stworzyc statystyki, ktora koncowka, czy to .,pl czy .net jest najpopularniejsza. Jak to zrobić z poziomu serwera SQL? Grupowanie, subsring na ostatnego stringa po kropce? Jak to ugryżć?
vokiel
Tak SUBSTRING() z LOCATE() plus pewnie jeszcze REVERSE() i LENGTH() da radę wyciągnąć ciąg po ostatniej kropce.

Chociaż łatwiej będzie z SUBSTRING_INDEX():

  1. /* Create a table called NAMES */
  2. CREATE TABLE NAMES(id integer PRIMARY KEY, domain text);
  3.  
  4. /* Create few records in this table */
  5. INSERT INTO NAMES VALUES(1,'domenka.pl');
  6. INSERT INTO NAMES VALUES(2,'inna.domena.eu');
  7. INSERT INTO NAMES VALUES(3,'cokolwiek.eu');
  8. INSERT INTO NAMES VALUES(4,'subdomena.domeny..net');
  9. INSERT INTO NAMES VALUES(5,'jeszcze.dluzsza.nazwa.com');
  10. INSERT INTO NAMES VALUES(6,'example.com');
  11.  
  12.  
  13. SELECT
  14. SUBSTRING_INDEX(`domain`, '.', -1) AS 'tld',
  15. COUNT(`id`) AS 'items_count'
  16. FROM `NAMES`
  17. GROUP BY tld


Kod
tld    ile
pl    1
eu    2
net    1
com    2

DNMX
Dzięki, działa a taka dokładnie kwerenda daje interesujące mnie statystyki
  1. SELECT SUBSTRING_INDEX(`domain`, '.', -1) AS 'tld', COUNT(`id`) AS 'items_count' FROM `banned_domains` GROUP BY tld ORDER BY `items_count` DESC
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.