Получить два значения из одной таблицы, используя SELECT - JOIN - PullRequest
0 голосов
/ 25 мая 2018

У меня есть три таблицы - Материалы, Действия и Единицы.И таблица материалов, и деятельность связаны с таблицей единиц измерения, содержащей свойство unit_id.Как получить единицу действия и единицу материала с помощью одного запроса?

Это мой текущий запрос:

SELECT u.username, m.name, a.name, un.name
FROM users u
JOIN materials m
ON (m.id = u.material_id)
JOIN activities a
ON (a.id = u.activity_id)
JOIN units un
ON (un.id = m.unit_id OR un.id = a.unit_id)

Однако я получаю только одну единицу, возвращенную сэто, я хочу получить и единицу материала и единицу деятельности.Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Для этого можно использовать подзапрос, он пригодится в таких ситуациях:

SELECT u.username, 
       (SELECT name FROM m WHERE m.id = u.material_id), 
       (SELECT name FROM a WHERE a.id = u.activity_id)
   FROM users
0 голосов
/ 25 мая 2018

Присоединиться к столу units дважды

SELECT u.username, 
       m.name as m_name, unm.name as m_unit,
       a.name as a_name, una.name as a_unit
FROM users u
JOIN materials m ON m.id = u.material_id
JOIN activities a ON a.id = u.activity_id
JOIN units unm ON unm.id = m.unit_id
JOIN units una ON una.id = a.unit_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...