2012-03-17 9 views
0

私はproject_idに割り当てられたaccount_idsのリストを含むProject_Assignedテーブルを持っています。存在しない:特定のプロジェクトに割り当てられていないアカウントを選択しますか?

以下特定のプロジェクトに現在割り当てられていないすべてのクライアントのリストを収集しようとしています。

特定のプロジェクトに関連付けられているクライアントがない場合、以下のクエリが機能しますが、プロジェクトにクライアントを割り当てるとすぐに結果セットには何も返されません。そのプロジェクト

SELECT Account.Account_ID, 
Client.First_Name AS `First_Name`, Client.Last_Name AS `Last_Name`, Client.Profile_Pic, Client.Job_Title, Client.Company_Name 
FROM Client 
LEFT JOIN Account ON (Account.Account_ID = Client.Client_ID) 
LEFT JOIN `Admin_Agency` ON (Client.Agency_ID_FK = Admin_Agency.Agency_ID) 
WHERE Account.Access_Type = 'Client' && NOT EXISTS 

(SELECT Account.Account_ID, Account.Access_Type 
FROM `Project_Assigned` projects 
INNER JOIN `Account` ON (projects.AccountID = Account.Account_ID) 
INNER JOIN `Project` ON (projects.ProjectID = Project.Project_ID) 
LEFT JOIN `Client` ON (Account.Account_ID = Client.Client_ID) 
WHERE projects.ProjectID = 48 && Account.Access_Type = 'Client'); 

表Project_Assigned:

+-----------+-----------+ 
| ProjectID | AccountID | 
+-----------+-----------+ 
|   4 |   3 | 
|   4 |   4 | 
|   4 |   5 | 
|   4 |   6 | 
|  12 |   1 | 
|  12 |  11 | 
|  12 |  12 | 
|  29 |  18 | 
|  31 |  18 | 
|  46 |  18 | 
|  48 |  18 | 
|  48 |  12 | 
+-----------+-----------+ 

答えて

0

それは私があなたのスキーマを誤解したり、あなたのニーズだとかなり可能ですが、あなたはこのをしたいように聞こえる:

SELECT Client_ID, First_Name, Last_Name, Profile_Pic, Job_Title, Company_Name 
    FROM Client 
WHERE Client_ID IN 
     (SELECT Account_ID 
      FROM Account 
      WHERE Access_Type = 'Client' 
     ) 
    AND Client_ID NOT IN 
     (SELECT Account_ID 
      FROM Project_Assigned 
      WHERE ProjectID = 48 
     ) 
; 

ませんか?

+0

こんにちは私は上記の編集し、今の作業を釣りを微調整しました。これは本当に助けてくれてありがとう。 – Malcr001

+0

@ user971824:ようこそ! – ruakh

+0

@ user971824:あなたの編集は本当に私にとって意味をなさない。例えば、LEFT JOIN Admin_Agencyの目的は何ですか?クエリの他の部分は実際には 'Admin_Agency'テーブルを参照しません。 – ruakh

関連する問題