2012-03-22 1 views
0

質問Admin_Agency、Agency_Employee、またはClientテーブルのいずれかにのみ存在するため、管理者、従業員、クライアントのアカウントの詳細を取得するために、3つのテーブルから情報を取得するクエリがあります。 NULLS、以下を参照してください。列を結合しますか?

ここで私は何のNULL列が存在しないので、何とかのように次の列を結合したいと思います:

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」という名前です。

これはできますか?

+--------------------+---------------------+------------+------------------+-----------------+-------------+------------+-----------+-------------+------------+-----------+-------------+ 
| 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_First_Name、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

0

左または右の外部結合によってNULLが返されます。

内部結合によって、より少ない行が得られるかもしれませんが、どの行も「結合」からのヌルを導入しません。

関連する問題