Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> REGEXP dla ścieżek typu IP
Walian
post 19.09.2009, 23:40:56
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Mam takie oto zapytanie:
  1. SELECT category_id, category_parent_id, category_path, category_name FROM categories WHERE category_path REGEXP '7\\.([0-9]+[\\.]?){0,2}$';


Wyciąga ono wszystkie podkategorie (do głębokości 2) z kategorii o id = 7.
Przykład - dla danych:

Kod
id | parent_id | sort_order | depth | path        | name
---+-----------+----------------------------------+-------------
1  |         0 |          1 |     0 | 1           | Motoryzacja
2  |         1 |          1 |     1 | 1.2         | Samochody
3  |         2 |          1 |     2 | 1.2.3       | Osobowe
7  |         1 |          4 |     1 | 1.7         | Motocykle
27 |         3 |          1 |     3 | 1.2.3.27    | Fiat
28 |         3 |          1 |     3 | 1.2.3.28    | Audi
29 |         3 |          1 |     3 | 1.2.3.29    | BMW
30 |         3 |          1 |     3 | 1.2.3.30    | Opel
31 |        27 |          1 |     4 | 1.2.3.27.31 | Uno
32 |        27 |          1 |     4 | 1.2.3.27.32 | Tipo
33 |        27 |          1 |     4 | 1.2.3.27.33 | Bravo
34 |        27 |          1 |     4 | 1.2.3.27.34 | Brava


to zapytanie nie powinno nic zwrócić bo kategoria "Motocykle" nie ma podkategorii, natomiast zwraca:
Kod
id | parent_id | sort_order | depth | path        | name
---+-----------+----------------------------------+-------------
31 |        27 |          1 |     4 | 1.2.3.27.31 | Uno
32 |        27 |          1 |     4 | 1.2.3.27.32 | Tipo
33 |        27 |          1 |     4 | 1.2.3.27.33 | Bravo
34 |        27 |          1 |     4 | 1.2.3.27.34 | Brava


Czyli należałoby dopracować początek REGEXP-a by dopuścił ścieżki:
Cytat
x.x.x.x.7.(dalsza część ścieżki)

albo
Cytat
7.(dalsza część ścieżki)

ale nie:
Cytat
x.x.x.x7.(dalsza część ścieżki)

(Zwróćcie uwagę na kropki przy siódemce).

Ktoś wie jaki powinien być wzorzec?

EDIT: Już sobie poradziłem:
  1. SELECT id, parent_id, path, name FROM categories WHERE path REGEXP '^([0-9]+[\\.])*7\\.([0-9]+[\\.]?){0,2}$';


Ten post edytował Walian 19.09.2009, 23:53:21
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:46