2013-01-19 51 views
0

我目前有:LEFT JOIN只返回一半所需要的结果

SELECT * FROM submissions AS s 
    LEFT JOIN submission_category AS sc ON s.submission_category = sc.sub_cat_id  
    JOIN hospitals  AS h ON h.hospital_id  = sc.main_hospital_id 
    JOIN products  AS p ON p.product_id   = s.product_id 
    JOIN product_group AS pg ON pg.id    = p.product_group_id 
    JOIN progress_steps AS ps ON sc.approval_step  = ps.step_id 
    WHERE s.approval_status='2' 
    AND sc.user_id='$mask5' 

的问题是,SC有3行S有6行。我需要返回所有六行,但目前它只返回3,其中每一行都对应于sc。根据该建议,我现在想

SELECT * FROM submissions AS s 
LEFT JOIN submission_category AS sc ON (s.submission_category = sc.sub_cat_id AND sc.user_id='$mask5') 
JOIN hospitals  AS h ON h.hospital_id  = sc.main_hospital_id 
JOIN products  AS p ON p.product_id   = s.product_id 
JOIN product_group AS pg ON pg.id    = p.product_group_id 
JOIN progress_steps AS ps ON sc.approval_step  = ps.step_id 
WHERE s.approval_status='2' 

但仍然得到三人行,不是6?在WHERELEFT JOINβed表格[秒]的

回答

0

具有列“变为” LEFT JOININNER(sc.user_id =“$ MASK5”总是返回NULL或假的情况下,有在submission_category没有相应的行)。将sc.user_id=...合并成合并条件:

.... 
LEFT JOIN submission_category AS sc ON (s.submission_category = sc.sub_cat_id AND 
sc.user_id='$mask5') 
... 
+0

我试过调整并更新了问题。还有其他建议吗?谢谢你的帮助。 –

+0

@Dev Newb:与[INNER] JOIN医院和progress_steps相同的问题;它过滤掉结果集中的记录,因为它引用了'sc'。它们也应该是'LEFT JOIN'。对不起,我没有注意到蝙蝠的权利。 – a1ex07

+0

工作。谢谢! –