#mysql #sql #join #select
#mysql #sql #Присоединиться #выберите
Вопрос:
У меня есть две таблицы (msg и users). Я пытаюсь объединить эти две таблицы вместе и распечатать имя и фамилию отправителя и получателя, а также все содержимое сообщения, если сообщение помечено как флаг. Однако я продолжаю получать ошибки и пока не нашел хорошего способа сделать это.
Изображения таблиц для справки: https://imgur.com/a/wYuptfR
SQL-запрос, который я использую прямо сейчас:
SELECT msg.*, users.uuid AS users.ruuid, users.uuid AS users.suuid, users.firstName, users.lastName
FROM msg
INNER JOIN users ON users.ruuid = msg.recipient
AND INNER JOIN users ON users.suuid = msg.sender
WHERE msg.flag = 0
Комментарии:
1. Вам нужны разные псевдонимы таблиц.
2. удалите «И»…
3. Не могли бы вы дать мне немного больше информации? Я не знаю, понимаю ли я, что вы имеете в виду. Я новичок в SQL, поэтому я все еще учусь
4. @LasseEdsvik Я пробовал это, я получаю ошибку # 1064
5. Пожалуйста, какой вы хотите ожидаемый результат??
Ответ №1:
Вы можете запросить одну и ту же таблицу несколько раз, если используете разные псевдонимы. Также обратите внимание, что у вас не должно быть and
между двумя join
предложениями:
SELECT msg.*,
r.uuid AS ruuid, r.firstName AS rfirstname, r.lastName AS rlastname,
s.uuid AS suuid, s.firstName AS sfirstname, s.lastName AS slastname
FROM msg
INNER JOIN users r ON r.uuid = msg.recipient
INNER JOIN users s ON s.uuid = msg.sender
WHERE msg.flag = 0
Комментарии:
1. При этом не извлекаются имя и фамилия отправителя, только получателя.
2. @Очень хороший момент. Отредактировал мой ответ и добавил их в список выбора
3. Я попробовал это и получил массивный дамп ошибок: imgur.com/a/E3pDM6H
4. У @Trae там была избыточная запятая, извините за это. Отредактировано и исправлено.
Ответ №2:
Попробуйте это
SELECT msg.*, u.uuid , u.firstName, u.lastName, s.uuid , s.firstName, s.lastName
FROM msg
INNER JOIN users u ON u.uuid = msg.recipient
INNER JOIN users s ON s.uuid = msg.sender
WHERE msg.flag = 0