2012-03-22 112 views
0

好吧,查询从三个表中获取信息以获取帐户详细信息,从管理员,员工和客户端的问题是我的,因为某人只存在于Admin_Agency,Agency_Employee或客户端表中最后有一堆列NULLS,见下文。联合柱加入?

在这里,我想以某种像现在这样有没有空列结合下列:

Client.First_Name,Admin_Agency.Admin_First_Name和Admin_Agency.Admin_First_Name 将First_Name成

Client.Last_Name, Admin_Agency.Admin_Last_Name和Admin_Agency.Admin_Last_Name into Last_Name

最后列出名为“Profile_Pic”的所有列。

可以这样做吗?该ADMIN_FIRST_NAME以上

+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 
| User_Comment  | Time_Stamp   | Account_ID | Admin_First_Name | Admin_Last_Name | Profile_Pic | First_Name | Last_Name | Profile_Pic | First_Name | Last_Name | Profile_Pic | 
+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 
| Lorem ipsum dolor | 2012-03-21 23:40:15 |   18 | Fredric   | Beskoski  | 002.jpg  | NULL  | NULL  | NULL  | NULL  | NULL  | NULL  | 
+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 
| Lorem ipsum dolor | 2012-04-21 23:40:05 |   20 | NULL    | NULL   | NULL  | Alan  | James  | 032.jpg  | NULL  | NULL  | NULL  | 
+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 
| Lorem ipsum dolor | 2012-05-24 21:40:12 |   21 | NULL    | NULL   | NULL  | NULL  | NULL  | NULL  | David  | Calson | 044.jpg  | 
+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 

通告,ADMIN_LAST_NAME和Profile_Pic填充在但其余的都是NULL。

查询:

SELECT 
    Comments.User_Comment, Comments.Time_Stamp, Account.Account_ID, 
    Admin_Agency.Admin_First_Name, Admin_Agency.Admin_Last_Name, Admin_Agency.Profile_Pic, 
    Agency_Employee.First_Name, Agency_Employee.Last_Name, Agency_Employee.Profile_Pic, 
    Client.First_Name, Client.Last_Name, Client.Profile_Pic 

FROM Comments 
    LEFT JOIN Account ON (Account.Account_ID = Comments.Account_ID_FK4) 
    LEFT JOIN Admin_Agency ON (Account.Account_ID = Admin_Agency.Agency_ID) 
    LEFT JOIN Agency_Employee ON (Account.Account_ID = Agency_Employee.Employee_ID) 
    LEFT JOIN Client ON (Account.Account_ID = Client.Client_ID) 

WHERE Comments.Design_ID_FK = 5 

感谢您的帮助!

回答

0

您应该优先考虑首先检查哪一个(来自客户端或管理员的值)。例如,如果你想检查客户端存在的第一个值,如:

select if(Client.First_Name is Null,Admin_Agency.Admin_First_Name,Client.First_Name) 
as first_name ,... //Same for other columns 
From ... 
Joins.... 
Where ... 
+0

感谢这工作对我来说。 – Malcr001 2012-03-22 01:34:47

0

左或右外连接可以给你空值。

内部连接可能会给你更少的行,但没有任何行会从“连接”中引入任何空值。