#mysql #sql #relationship
#mysql #sql #отношения
Вопрос:
Я пытаюсь получить значения, соответствующие значению из второго столбца. Например, я хочу знать, кто является отправителем для Билла Гейтса, используя только идентификаторы.
У меня есть два стола,
*users* table | user_ID | Full_name | | -------- | -------------- | | 1 | Steve Jobs | | 2 | Bill Gates | | 3 | Elon Musk | *relationships* table (with both column foreign keys) | user_sender | user_receiver | | ------------ | -------------- | | 1 | 2 | | 3 | 1 | | 3 | 2 |
Я хочу выбрать на основе столбца «user_receiver» соответствующие значения в столбце «user_sender».
Например, я хочу знать, кто является user_sender для ВЫВОДА 2:
| | | | ------------ | -------------- | | 1 | 2 | | 3 | 2 |
Ответ №1:
Вам нужно объединить таблицы и выбрать нужные строки
у вас есть доступ ко всем столбцам обеих таблиц, обращаясь к ним с их псевдонимами
SELECT u.user_ID , u.Full_name,r.user_receiver FROM users u JOIN relationships r ON u.user_ID = r.user_sender WHERE r.user_receiver = 2
Ответ №2:
Если вы хотите посмотреть на основе имени, затем присоединитесь к отношениям с пользователями.
SELECT rel.user_sender , rel.user_receiver -- , sender.Full_name AS sender_name -- , receiver.Full_name AS receiver_name FROM relationships AS rel JOIN users AS sender ON sender.user_ID = rel.user_sender JOIN users As receiver ON receiver.user_ID = rel.user_receiver WHERE receiver.Full_name = 'Bill Gates'
Если вы уже знаете номер получателя user_receiver и вам нужен только идентификатор
SELECT * FROM relationships WHERE user_receiver = 2