LEFT JOIN仅返回所需结果的一半

时间:2013-01-19 05:02:43

标签: php mysql

我目前有:

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的s。

基于我现在正在尝试的建议:

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'

但仍然有三排,而不是六排?

1 个答案:

答案 0 :(得分:0)

LEFT JOIN中设置WHERE ed table [s]列会将“LEFT JOIN变为INNER(sc.user_id ='$ mask5'始终返回{{1}如果submission_category中没有相应的行,则为false或false。将NULL移至加入条件:

sc.user_id=...
相关问题