我在使用简单的MySQL查询时遇到麻烦。
这是查询:

SELECT distinct e.E_CODE, s.S_CODE, p.P_ID, p.P_NAME, p.P_FIRSTNAME, p.P_STATUS, e.E_BOSS, tp.TP_TITLE
from event_participation ep, worker p, type_participation tp, event e, section s
where ep.P_ID = p.P_ID
and s.S_ID = e.S_ID
and ep.TP_ID = tp.TP_ID
and e.E_CODE = ep.E_CODE


问题在于,有时ep.TP_ID的值设置为零,而tp.TP_ID的ID却没有。它是自动递增的,从1开始,依此类推。

结果显然是当ep.TP_ID = 0且tp.TP_ID中没有匹配项时,该查询不返回记录。

因此,我试图找出一种方法来获得那些结果。我当时在考虑使用LEFT JOIN语句,但无法找出将其插入查询的正确方法。

对此问题的任何建议将不胜感激。

最佳答案

首先,我建议您对没有类型的event_participation记录使用某种通用类型;但是,除非做出此决定,否则假设您要获取所有表之间的所有匹配记录,但也要获取无类型的结果,则可以使用以下查询:

SELECT DISTINCT e.E_CODE, s.S_CODE, p.P_ID, p.P_NAME, p.P_FIRSTNAME, p.P_STATUS, e.E_BOSS, tp.TP_TITLE
    FROM event_participation ep
JOIN worker p ON (ep.P_ID = p.P_ID)
JOIN event e ON (e.E_CODE = ep.E_CODE)
JOIN section s ON (s.S_ID = e.S_ID)
LEFT JOIN type_participation tp ON (ep.TP_ID = tp.TP_ID)

关于mysql - 具有多个表和ID不匹配的简单查询问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27706525/

10-11 01:46