2016-06-07 64 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