У меня есть система обмена сообщений (очень простая), который имеет таблицу, как это:Как сделать запрос на 1 столбец, выбирая из двух столбцов MySQL
**MESSAGE_ID** **RUSER_ID** **SUSER_ID** **MESSAGE_DATA** **DATE**
Ruser является принимающим пользователем, и SUSER является отправителем. Если бы я хотел, чтобы вывести запрос, который будет выводить определенные пользователям сообщения, я бы себе сделать:
Select * от PRIVATE_MESG где RUSER_ID = $ USER_ID или SUSER_ID = $ USER_ID
Это дало бы мне все MESSAGE_ID-х которые связаны с этим USER_ID. Я хотел бы создать столбец, который будет генерировать только ID, связанный с RUSER_ID или SUSER_ID, связанный с определенным пользователем. Мне это нужно, чтобы выбрать сообщения, которые RUSER_ID или SUSER_ID являются равно USER_ID но отображать только один, который не USER_ID
Я тогда хотел бы сделать группу по выходу из этого запроса ,
Любая помощь очень ценится!
Спасибо!
update Я действительно не ищу message_id, я просто ищу список пользователей, которые этот человек написал или получил от.
ОБНОВЛЕНИЕ Как раз так все знают, я получил ответ на этот вопрос отлично! Я изменил его позже, чтобы он также отображал их по дате от самых новых до самых старых. Я сделал это, разделив DATETIME на DATE и TIME, ИСПОЛЬЗУЯ функцию DATE() и TIME(). Вот мой окончательный запрос:
SELECT
IF(RUSER_ID = $USER, SUSER_ID, RUSER_ID) as THE_OTHER_GUY, DATE(DATE) as DAY, TIME(DATE) as TIME
FROM PRIVATE_MESG
WHERE RUSER_ID = $USER
OR SUSER_ID = $USER;
group by THE_OTHER_GUY ORDER BY DAY DESC, TIME DESC
Надеюсь, это поможет следующему человеку!
Это делает работа! Вы знаете, какой из них будет более эффективным? Если или союз? – Linux4Hope
Объединение может быть более эффективным, если у вас есть индексы на RUSER_ID и SUSER_ID, но он может стать очень многословным, если вы хотите вычислить некоторые другие столбцы :) –
Я начинающий программист (18 лет), поэтому я категорически игнорирую термин «индексы» около 100% уверены, что лучший способ описать их. Эти два столбца ссылаются на другую таблицу (USER_ACCOUNTS). Значит ли это, что они являются индексом? Кроме того, ваш ответ действительно помог мне больше узнать о mysql ... Спасибо! – Linux4Hope