Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, есть таблица отзывов о каком-то товаре, сортировка по полю id, если пользователь решает не просто прокомментировать, а ответить на какой-то комментарий, как вставить эти ответы между самими комментариями при помощи запроса? Пробовал, пытался, получился запрос с подзапросом, но самого главного он не делает, а выдает все просто как по ORDER BY, как бы результат выборки подзапроса вставить в сам запрос туда куда нужно?
Неактивен
Если комментариев ожидается немного (например, порядка десяти), то можно плюнуть
на индекс при сортировке и сортировать каким-то сложным выражением (например,
ORDER BY IF(parentId = 0, opinionId * 1000000, parentId * 1000000 + opinionId)
В случае же с большим количеством комментариев, лучше выбирать подзапросами
(и строить потоки в интерфейсе, наверное).
Неактивен
paulus, я решил не не изменять порядок вывода при помощи SELECT, а вставлять новое сразу туда, куда надо, нашел одну функцию "ON DUPLICATE KEY UPDATE", но немогу сформировать запрос по идее она должна делать UPDATE поля Id, но на деле этого нет, возможно ли вообще вставить новое поле с уже существующим Id, а старое изменить на +1?:
Отредактированно Dimitry (11.04.2011 17:34:14)
Неактивен
А если у Вас будет миллион комментариев и добавят ответ к первому?
Неактивен
paulus, я решил подругому поле parentId изменил на orderId, в 1 сообщении там 1 и при поступлении нового сообщения номера уже имеющихся сдвигаются в сторону увеличения, а новое вставляется под номером того, на которое ответили и порядок расположения сохраняется:
Отредактированно Dimitry (13.04.2011 19:05:02)
Неактивен