0

私は現在持っています:

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行あることです。6行すべてを返す必要がありますが、現在は、scに対応するsからそれぞれ1つずつ、3つしか返していません。

私が今試している提案に基づいて:

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行ではなく3行を取得していますか?

4

1 に答える 1

0

LEFT JOINed table [s]の列をWHERE「turns」LEFT JOINにするとINNER(sc.user_id ='$ mask5'はNULL、submission_categoryに対応する行がない場合は常にfalseを返します)。結合sc.user_id=...状態に移行します:

....
LEFT JOIN submission_category AS sc ON (s.submission_category = sc.sub_cat_id AND 
 sc.user_id='$mask5' )
...
于 2013-01-19T05:05:58.670 に答える