У меня три таблицы - материалы, действия и единицы. Таблица материалов и действий связана с таблицей единиц, содержащей свойство 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)
Однако я получаю только одну единицу, возвращенную с ней, я хочу получить как единицу материала, так и единицу активности. Как мне это достичь?
Входите в таблицу 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
Вы можете использовать дополнительный запрос для этого, он пригодится для таких ситуаций:
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