Kievnet Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 Дано:- тема: t1, идентификатор темы: 1;- пользователь: user2, идентификатор пользователя: 2; Задача:Сделать выборку следующим образом:- найти в теме t1 сообщение пользователя user2 - пусть это будет пост p1, идентификатор поста: 100- вернуться от поста p1 на один назад (ID=99) - это будет пост p2- вывести пару значений вот так: "p2" - "p1"- вести поиск, выборку и вывод пар до тех пор, пока не будет достигнут конец темы t1. Дополнительно:- достоверно известно, что ситуаций, когда один и тот же пользователь ответил сразу же после своего ответа (два поста одного юзера подряд) быть не может. Нужно составить SQL запрос. Что думаете, может кто что нибудь подскажет? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 а всегда нужно возвращаться на -1 ?а если мы вернёмся а этот пост 99-ый будет удалён? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 Если кто-то напишет только запрос для рекурсивной выборки под MySQL, я буду носить футболку с его ником и фотографией весь год. Топик стартеру, напишите что Вы хотите сделать на примере, а не то что вы написали. А то Миша Вам уже трактовку дал. Еще не ясно пост назад он в той же теме или вообще. В вашем примере 99 может быть в теме 2 например. На вскидку решение.Берем все ид постов из темы, загоняем их в массив вида ид_поста => ид_юзера Дальше просто пробегаем этот массив и составляем пары. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 Если кто-то напишет только запрос для рекурсивной выборки под MySQL, я буду носить футболку с его ником и фотографией весь год.Я тоже поступлю так же По существу силами MySQL можно, но сложно н.р. в хранимой процедурено очень зодолбанисто этоНа самом PHP куда все проще решается же Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 могу хранимку написать. куда фотографию высылать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 .silentмы с GiV про реализацию рекурсии только запросом же А хранимку под какой MySQL написаниш? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 13 Мая 2006 Жалоба Поделиться Опубликовано 13 Мая 2006 под mySQL, который поддерживает хранимки запрос и будет exec hranimka с параметрами Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kievnet Опубликовано 14 Мая 2006 Автор Жалоба Поделиться Опубликовано 14 Мая 2006 Пока я вижу только слова о том, что мол это все сложно. Решение предлагается только одно - GiV'а. Тема не редактируется. На вскидку - пример подобной темы - может быть та же игра в ассоциации: постuser1 Солнцеuser2 Теплоuser1 Домuser2 Крыша Результат работы запроса должен быть таким: У пользователя user2 ассоциативный ряд такой: Солнце - ТеплоДом - Крыша Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 14 Мая 2006 Жалоба Поделиться Опубликовано 14 Мая 2006 Я даже не могу представить себе чистый mysql запрос который делал бы это. Разве не проще как говорилось раньше загнать все это дело в массив? Это будет проще и удобнее. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 14 Мая 2006 Жалоба Поделиться Опубликовано 14 Мая 2006 SELECT TOP 1 post_id FROM posts WHERE id < (SELECT post_id FORM posts WHERE memer_id=user2 AND topic_id=topic1) Но этот просто SQL, на MySQL такой запрос работать не будет. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Garret Опубликовано 14 Мая 2006 Жалоба Поделиться Опубликовано 14 Мая 2006 Я не пойму вообще этот запрос... Разве вложеный запрос вернет тебе одно значение? И даже если... то этот запрос выберет только последнюю связку, т.е. решить проблему чистым запросом нельзя. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.