2011-06-26 76 views
2

我也來加入基於條件MySQL的連接表

表表:主要

  • condition_field
  • UNIQUE_ID
  • 用戶名

表:一個

  • UNIQUE_ID
  • 公司名稱

表:乙

  • 用戶名
  • 公司名稱

    如果main.condition_field = 「X」 我需要LEFT JOIN表on main.unique_id = a.unique_id

    否則,如果main.condition_field = 「Y」 我需要LEFT JOIN表B上main.username = b.username

到目前爲止,我只是有這個疑問加入2臺主表一個

SELECT main.*, a.* FROM main LEFT JOIN a ON main.unique_id = a.unique_id where main.unique_id='X' 

請幫助


@Lukas

非常感謝您爲,但什麼是我的另一場[狀態]在主表和希望的條件添加到查詢

WHERE狀態=「ACTIVE」

在哪裏可以放置條件條款。由於

+0

我愛'SELECT *'格局! –

回答

0

你可以有加入的ON子句中muliple條件:

SELECT 
    main.*, 
    CASE main_condition 
    WHEN 'X' THEN a.companyname 
    WHEN 'Y' THEN b.companyname 
    ELSE NULL 
    END AS companyname 
FROM main 
LEFT JOIN a ON main.condition_field = 'X' AND main.unique_id = a.unique_id 
LEFT JOIN b ON main.condition_field = 'Y' AND main.username = b.username 
WHERE main.status = 'ACTIVE' 
0

也許,這就是你可能需要做什麼:

SELECT main.*, a.* 
FROM main 
LEFT JOIN a ON main.unique_id = a.unique_id 
where main.condition_field='X' 

UNION 

SELECT main.*, b.* 
FROM main 
LEFT JOIN b ON main.username = b.username 
where main.condition_field='Y'