Mysql 使用SELECT-JOIN从同一个表中获取两个值

Mysql 使用SELECT-JOIN从同一个表中获取两个值,mysql,sql,Mysql,Sql,我有三张桌子——材料、活动和单元。 物料和活动表都通过包含unit\u id属性与units表相关。如何通过单个查询同时获取活动单位和物料单位 这是我当前的查询: 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 =

我有三张桌子——材料、活动和单元。 物料和活动表都通过包含
unit\u id
属性与units表相关。如何通过单个查询同时获取活动单位和物料单位

这是我当前的查询:

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, 
       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

您可以使用子查询进行此操作,它在以下情况下非常方便:

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