php - JOIN different tables depending on condition -


this question has answer here:

there table of chat participants, data_chats_parties. in table, there 2 fields, team , member denote if participant member or team account. if team=0 member account. if team!=0 team account.

if team account, need fetch name column data_teams table. otherwise, need fetch username column data_members table.

obviously query not work, it's i'm trying achieve.

select data_chats_parties.*,data_teams.name,data_members.username data_chats_parties   if ( data_chats_parties.team!=0     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 ) data_chats_parties.member!=1 group data_chats_parties.id 

the where data_chats_parties.member!=1 line says "fetch participants not me".

is possible achieve in manner?

you need use 2 different queries , perform union all:

-- teams select     dcp.*, dt.name data_chats_parties dcp inner join data_teams dt     on dt.id = dt.team     dcp.member <> 1     , dcp.team <> 0  union  -- members select     dcp.*, dt.name data_chats_parties dcp inner join data_members dm     on dt.id = dt.member     dcp.member <> 1     , dcp.team = 0