0

我有5张桌子..,

活动、用户、管理员、个人、雇主

Activity、Admin、Individual、Employer 属于用户表,如图所示

Activity          Admin                 Individual              Employer
+-----------+    +------------------+   +------------------+    +------------------+
id | user_id     id | user_id | name    id | user_id | name     id | user_id | name
+-----------+    +------------------+   +------------------+    +------------------+

现在,我在Activity桌子上发起查询,

如果user_id值在Admin表中,那么我需要从Admin表中获取名称,如果user_id值在Employer表中,那么我需要从表中获取名称Employer,同样,如果user_id值在表中,那么我需要从表Individual中获取名称,Individual

4

2 回答 2

2

试试这个概念:

SELECT 
    A.ID AS ID
    A.User_id AS UserID
    A.Name AS Name
    'Admin' AS TableName
FROM Admin A INNER JOIN Activity B 
ON A.User_Id=B.User_Id

UNION ALL 

SELECT 
    A.ID AS ID
    A.User_id AS UserID
    A.Name AS Name
    'Individual' AS TableName
FROM Individual A INNER JOIN Activity B 
ON A.User_Id=B.User_Id

UNION ALL 

SELECT 
    A.ID AS ID
    A.User_id AS UserID
    A.Name AS Name
    'Employer' AS TableName
FROM Employer A INNER JOIN Activity B 
ON A.User_Id=B.User_Id
于 2013-05-06T10:38:36.957 回答
0

LEFT JOIN与 一起使用COALESCE。像这样的东西:

SELECT
  a.id,
  COALESCE(d.name, i.name, e.name) AS userName
FROM Activity        AS a
LEFT JOIN admin      AS d ON a.user_id = d.user_id
LEFT JOIN Individual AS i ON a.user_id = i.user_id
LEFT JOIN Employer   AS e ON a.user_id = e.user_id;
于 2013-05-06T10:33:36.577 回答