我遇到一个简单的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语句,但无法找到将其插入查询的正确方法。
对此事的任何建议都将不胜感激。
答案 0 :(得分:0)
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 p.P_ID = ep.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 tp.TP_ID = ep.TP_ID;
答案 1 :(得分:0)
首先,我建议你为没有类型的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)