Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie wystapien, regexp
Forum PHP.pl > Forum > Bazy danych > MySQL
dharul
Szanowni forumowicze, potrzebuje pomocy i/lub informacji czy dane ktore chce uzyskac z bazy sa w ogole mozliwe do uzyskania.

Mam tabele:

------------------
id | visit_host |
------------------
1 | onet.pl |
2 | net.de |
3 | chelo.pl |
...


Potrzebuje uzyskac dane w takiej postaci

ile | domena
-------------
1 | .de
3 | .pl


Czyli krotko mowiac zliczanie wystapien takiej samej domeny w kolumnie visit_host

napisalem cos takiego:

  1. SELECT count(*) AS ile, '.pl' AS domena FROM `visit` WHERE visit_host REGEXP '[.]pl'


aczkolwiek jak widac nie jest to zapytanie najwyzszych lotow. Moje pytania sa nastepujace:

1. czy mozna w jakis sposob wyswietlic wyciety fragment stringa przy pomocy regexp? (regexp daje tylko infromacje boolowska)
2. czy jest sens w tym przypadku joinowac tabele sama do siebie?
3. jak zliczyc wystepowanie takich samych fragmentow w stringu?

Bede wdzieczny!
dharul
dzieki za odpowiedz

niestety bardziej chodzilo mi o to, ze mam wiele roznych rodzajow domen w visit_host (tzn. nie wiem ile i jakie), a nie tylko dwie .pl i .de ...
erix
To po co używasz REGEXP do takich prostych wyrażeń? Jeśli masz stałą liczbę znaków poszukiwanych od prawej, to skorzystaj z czegoś takiego:

  1. SELECT * FROM domeny WHERE RIGHT(domena,3)

Tylko sobie dostosuj. Nie ma sensu męczyć dodatkowo wyrażeń regularnych, jeśli można osiągnąć taki sam efekt korzystając z mniej zasobożernych funkcji.
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-2025 Invision Power Services, Inc.