根据条件加入不同的表

时间:2016-06-07 01:11:11

标签: php mysql sql join inner-join

有一个聊天参与者表data_chats_parties。在此表中,有两个字段teammember,表示参与者是会员还是团队帐户。如果team = 0则它是一个成员帐户。如果团队!= 0则是团队帐户。

如果是团队帐户,我需要从name表中提取data_teams列。否则,我需要从username表中获取data_members列。

显然这个查询不起作用,但这是我想要实现的目标。

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行只是说"获取不是我的参与者"。

是否有可能以这种方式实现这一目标?

1 个答案:

答案 0 :(得分: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