2016-06-07 41 views
0

有一個聊天參與者表data_chats_parties。在這張表中,有兩個字段,teammember,它們表示參與者是成員還是團隊賬戶。如果團隊= 0,那麼它是一個會員帳戶。如果團隊!= 0,它是一個團隊帳戶。根據條件加入不同的表格

如果是團隊帳戶,我需要從data_teams表中獲取name列。否則,我需要從data_members表中獲取username列。

顯然這個查詢不起作用,但這是我想要實現的。

SELECT data_chats_parties.*,data_teams.name,data_members.username 
FROM data_chats_parties 
    IF (data_chats_parties.team!=0 THEN 
    INNER JOIN data_teams ON data_teams.id=data_chats_parties.team ELSE 
    INNER JOIN data_members ON data_members.id=data_chats_parties.member) 
WHERE data_chats_parties.member!=1 
GROUP BY data_chats_parties.id 

WHERE data_chats_parties.member!=1線只是說:「取與會者誰是不是我」。

以這種方式可以實現這個嗎?

+0

做單獨的查詢每個加盟,並與'UNION'將它們結合起來。 – Barmar

回答

1

您需要使用2次不同的查詢和執行UNION ALL

-- Get teams 
SELECT 
    dcp.*, dt.name 
FROM data_chats_parties dcp 
INNER JOIN data_teams dt 
    ON dt.id = dt.team 
WHERE 
    dcp.member <> 1 
    AND dcp.team <> 0 

UNION ALL 

-- Get members 
SELECT 
    dcp.*, dt.name 
FROM data_chats_parties dcp 
INNER JOIN data_members dm 
    ON dt.id = dt.member 
WHERE 
    dcp.member <> 1 
    AND dcp.team = 0