Перейти к контенту

Сложный (?) SQL запрос


Рекомендуемые сообщения

Дано:

- тема: t1, идентификатор темы: 1;

- пользователь: user2, идентификатор пользователя: 2;

 

Задача:

Сделать выборку следующим образом:

- найти в теме t1 сообщение пользователя user2 - пусть это будет пост p1, идентификатор поста: 100

- вернуться от поста p1 на один назад (ID=99) - это будет пост p2

- вывести пару значений вот так: "p2" - "p1"

- вести поиск, выборку и вывод пар до тех пор, пока не будет достигнут конец темы t1.

 

Дополнительно:

- достоверно известно, что ситуаций, когда один и тот же пользователь ответил сразу же после своего ответа (два поста одного юзера подряд) быть не может.

 

Нужно составить SQL запрос. Что думаете, может кто что нибудь подскажет?

Ссылка на комментарий
Поделиться на других сайтах

а всегда нужно возвращаться на -1 ?

а если мы вернёмся а этот пост 99-ый будет удалён?

Ссылка на комментарий
Поделиться на других сайтах

Если кто-то напишет только запрос для рекурсивной выборки под MySQL, я буду носить футболку с его ником и фотографией весь год.

 

Топик стартеру, напишите что Вы хотите сделать на примере, а не то что вы написали.

 

А то Миша Вам уже трактовку дал. Еще не ясно пост назад он в той же теме или вообще. В вашем примере 99 может быть в теме 2 например.

 

На вскидку решение.

Берем все ид постов из темы, загоняем их в массив вида ид_поста => ид_юзера

 

Дальше просто пробегаем этот массив и составляем пары.

Ссылка на комментарий
Поделиться на других сайтах

Если кто-то напишет только запрос для рекурсивной выборки под MySQL, я буду носить футболку с его ником и фотографией весь год.

Я тоже поступлю так же

 

По существу силами MySQL можно, но сложно н.р. в хранимой процедуре

но очень зодолбанисто это

На самом PHP куда все проще решается же

Ссылка на комментарий
Поделиться на других сайтах

Пока я вижу только слова о том, что мол это все сложно. Решение предлагается только одно - GiV'а. Тема не редактируется. На вскидку - пример подобной темы - может быть та же игра в ассоциации:

 

пост

user1 Солнце

user2 Тепло

user1 Дом

user2 Крыша

 

Результат работы запроса должен быть таким:

 

У пользователя user2 ассоциативный ряд такой:

 

Солнце - Тепло

Дом - Крыша

Ссылка на комментарий
Поделиться на других сайтах

Я даже не могу представить себе чистый mysql запрос который делал бы это. Разве не проще как говорилось раньше загнать все это дело в массив? Это будет проще и удобнее.
Ссылка на комментарий
Поделиться на других сайтах

SELECT TOP 1 post_id

FROM posts

WHERE id <

(SELECT post_id

FORM posts

WHERE memer_id=user2 AND topic_id=topic1)

 

Но этот просто SQL, на MySQL такой запрос работать не будет.

Ссылка на комментарий
Поделиться на других сайтах

Я не пойму вообще этот запрос... Разве вложеный запрос вернет тебе одно значение?

 

И даже если... то этот запрос выберет только последнюю связку, т.е. решить проблему чистым запросом нельзя.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.