Получить два значения из одной таблицы, используя SELECT - JOIN

0

У меня три таблицы - материалы, действия и единицы. Таблица материалов и действий связана с таблицей единиц, содержащей свойство 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 ответа

2
Лучший ответ

Входите в таблицу 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
1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню