|
|
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Есть таблица с комментариями, допускающая 1 уровень вложенности. Комментарии подгружаются лимитированно, например нужно загрузить 5 штук. При чем не важно на каком они будут уровне, в сумме должно быть 5. Все комментарии лежат в одной таблице. 0-й уровень parent = 0, 1-й уровень parent > 0 Логика: Выбираем 1 комментарий верхнего уровня, проверяем есть ли у него потомки, выбираем их, если не достигнут лимит, то выбираем второй комментарий верхнего уровня и т.д. Получилось что-то такое неработающее: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 15:42 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 15:47 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо за вариант, я не особенно знаток SQL, даже не знал этого, но в данном случае выбираются только parent = 0, а нужно что бы была такая последовательность: id parent 1 0 //0-й уровень 321 1 //1-й уровень, потомок 322 1 //1-й уровень, потомок 2 0 //0-й уровень 23 2 //1-й уровень, потомок 26 2 //1-й уровень, потомок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 16:25 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnectedв данном случае выбираются только parent = 0Вынь руки наружу и сделай нормально. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 19:14 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Ой! Пардон, не обратил внимание на данные в базе, старые комменты были только верхнего уровня вложенности. Да работает как надо. Но еще надо поправить сортировку. Верхний цровень должен сортироваться по дате создания 'created' DESC, а второй уровень локально по этому же полю. Никак не пойму как реализовать, нужно в результате запроса получить уже готовое дерево комментариев от новых к старым, но ответы на комментарии (второй уровень) должны сортироваться не в общем потоке, а локально в своей группе одного родителя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 20:21 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnectedнадо поправить сортировку. Верхний цровень должен сортироваться по дате создания 'created' DESC, а второй уровень локально по этому же полю. Никак не пойму как реализоватьА вот тут уже нужны две копии. После связывания аналогично добавить CASE-вычисляемое поле сортировки, содержащее created родителя или (если сам родитель) свой. Причём самым первым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 21:53 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akinanotconnectedнадо поправить сортировку. Верхний цровень должен сортироваться по дате создания 'created' DESC, а второй уровень локально по этому же полю. Никак не пойму как реализоватьА вот тут уже нужны две копии. После связывания аналогично добавить CASE-вычисляемое поле сортировки, содержащее created родителя или (если сам родитель) свой. Причём самым первым. Что-то вроде этого: Код: sql 1. 2. 3. 4. ? Но та не работает, что-то с алиасами перемудрил :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:11 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnectedЧто-то вроде этогоБлизко не лежало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:50 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, не пойму о каком связывании речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 16:09 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Тест-скрипты в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 16:37 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, ээээм, а можно для совсем одаренных как-то раскрыть это понятие? :) Я через phpmyadmin все делаю, а запрос будет в php использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 16:42 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnectedможно для совсем одаренных как-то раскрыть это понятие?Два запроса. CREATE TABLE и INSERT INTO. Чтобы можно было создать точную копию твоей таблицы и с твоими данными. Ну и, само собой, желаемый результат, причём именно на этих данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:23 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Результат получается должен вывести все комментарии до лимита в таком порядке (на основе запроса): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:51 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Ой, секунду, отбой. Сам не понял что хочу, сейчас правильно отсортирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:54 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnected , вообще-то предполагается, что Вы перед публикацией проверите то, что собираетесь публиковать, на работоспособность. И не станете выкладывать заведомо неработоспособную хрень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:55 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Прошу прощения, все верно, тест-скрипты выше. Просто потом еще этот результат я оберну в JOIN и отсортирую в обратном порядке (от старых к новым). Сообщения выбираются последние 5 (самые новые комментарии), потом они сортируются в порядке от старых к новым и выводятся, а новые подгружаются сверху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 18:05 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Пардон, потерялось кое-что. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Результат: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 18:13 |
|
||
|
Правильный последовательный выбор родителей и потомков из одной таблицы
|
|||
|---|---|---|---|
|
#18+
notconnectedРезультат Непонятна сортировка внутри групп детей. Для групп родителя 183 и родителя 144 - убывание (id или created), а для группы родителя 143 - наоборот (кроме записи id=169, она вообще упала), возрастание... и куда-то запропала запись с id=145... Если предположить, что в последней группе - косяк, а сортирить надо от новых к старым, то Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 19:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39305408&tid=1831428]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 471ms |

| 0 / 0 |
