|
|
|
| Сделал вывод древовидных комментариев
вид таблицы выглядит примерно так
id text parent_id
2 bla bla 0
3 bla 0
4 bla 3
5 bla 2
6 bla 3
|
Комментарии выводим рекурсией
Если parent_id == 0, корневой элемент
Иначе это чей-то потомок
Всё работает
Столкнулся с проблемой, когда комментарии решил выводить по 10 записей.
Мне надо чтобы LIMIT распространялся только на поля где parent_id==0
Короче говоря чтобы выводилось 10 основных коментрие, а под-комментарии выводились все без ограничений.
Как правильно составить запрос?
$sql = "SELECT c.id,
c.text,
c.id_user,
c.parent_id,
u.miniavatar
FROM com AS c
LEFT JOIN
users AS u ON (u.id=c.id_user)
WHERE c.poluchatel=$cat DESC LIMIT 0, 10";
|
| |
|
|
|
|
|
|
|
для: zorg84
(18.02.2014 в 00:55)
| |
SELECT id FROM com WHERE parent_id=0 LIMIT 0, 10
|
получаешь id с которыми надо работать | |
|
|
|
|
|
|
|
для: Valick
(18.02.2014 в 09:07)
| | А в одном запросе это возможно? | |
|
|
|
|
|
|
|
для: zorg84
(19.02.2014 в 03:13)
| | странное желание, при условии что
"Комментарии выводим рекурсией"
__
гугли про nested sets | |
|
|
|
|
|
|
|
для: Valick
(19.02.2014 в 09:48)
| | $sql1 = "SELECT id FROM com WHERE parent_id=0 LIMIT 0, 10"
$result1 = $db_li->query($sql1);
while($row1 = $result1->fetch_assoc())
{
echo $row1["id"];
$sql2 = "SELECT id FROM com WHERE parent_id=$row1[id]"
$result2 = $db_li->query($sql2);
while($row2 = $result2->fetch_assoc())
{
echo $row2["id"];
}
}
Такой цикл работает, но это неверно так-как запрос в цикле поэтому я и спрашивал о одном запросе
Или всё-таки можно так? | |
|
|
|
|
|
|
|
для: zorg84
(19.02.2014 в 21:10)
| | реляцонная БД не предназначена для хранения деревьев
поэтому тут либо запросы в цикле (проще всего), либо nested sets (сложная организация, медленное добавление и удаление, но зато оптимальная выборка)
есть еще вариант извлекать одним запросом (в некоторых случаях всю базу целиком) и разбирать на дерево средствами РНР, что тоже не "зер гуд" | |
|
|
|
|
|
|
|
для: Valick
(19.02.2014 в 22:05)
| | Короче делать в цикле. Спасибо | |
|
|
|