Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[sql] Budowa forum - dodatek.
Mała uwaga do idei budowy forum, która została przedstawiona w artykule “Budowa forum“. Chcąc wyświetlić wszystkie komentarze (drzewko) dla danego komentarza (w naszym przypadku dla #1) nie wystarczy posortować wyników po path - możemy wtedy otrzymać listę w złej kolejności, na przykład dla danych:
| id | parent_id | title | …. | path |
| 1 | 0 | Wątek główny | …. | |
| 2 | 1 | Wiadomość pierwsza | …. | 0001| |
| 3 | 2 | Wiadomość pod pierwszą | …. | 0001|0002| |
| 4 | 1 | Wiadomość druga | …. | 0001| |
Sortowanie tylko po path spowoduje, iż pozycja #4 znajdzie się pod #3, a powinna się znaleźć pod #2. Aby tego uniknąć wystarczy posortować według (CONST_SLC to maksymalna liczba cyfr):
-
CONCAT(path, LPAD(id, CONST_SLC, "0"), "|") ASC
Dzięki temu uzyskujemy w łatwy sposób kolejność pozycji jak w drzewku - bez konieczności generowania rekurencyjnego.
Napisz komentarz