2012-03-17 1 views
0

Хорошо У меня есть таблица Project_Assigned, которая содержит список учетных записей, назначенных project_id.NOT EXISTS: Выберите учетные записи, не предназначенные для конкретного проекта?

Ниже я пытаюсь собрать список всех клиентов, которые в настоящее время не привязаны к конкретному проекту.

В настоящий момент нижеследующий запрос работает, если нет клиентов, связанных с конкретным проектом, но как только я назначу одному клиенту проекту, результирующий набор ничего не возвращает, вместо этого он должен вернуть все остальные клиенты, не назначенные этот проект.

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

Привет, я сделал phew tweaks, отредактировал выше и теперь его работу. Спасибо, это действительно помогло. – Malcr001

+0

@ user971824: Добро пожаловать! – ruakh

+0

@ user971824: Ваше редактирование на самом деле не имеет для меня смысла. Например, какова цель 'LEFT JOIN Admin_Agency'? Ничто другое в запросе фактически не ссылается на таблицу «Admin_Agency». – ruakh

Смежные вопросы