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}$';