Как получить записи из двух разных таблиц - PullRequest
0 голосов
/ 19 марта 2019

У меня есть две таблицы базы данных с отношением 1 to M, как показано ниже

CaseMaster (caseId, case #, title, ....)

CaseStages (stageId, caseId, stageName,...., lawyerName, ...)

Вышеуказанное отношение означает, что каждый случай проходит несколько этапов (предварительное рассмотрение, кассация, исполнение и т. д.).На каждом этапе их могут быть разные или нет адвоката.Я хочу перечислить все дела (не этапы), на которых никогда не было адвоката.

Я пытался сделать это, используя выражение group by для caseId, но не знаю, как получить только эти случаи.у которого никогда не было адвоката.

enter image description here

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Вы можете написать свой запрос, используя WHERE NOT EXISTS, как показано ниже.

SELECT cm.caseid, 
       cm.[case#], 
       cm.title 
FROM   casemaster cm 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   casestages cs 
                   WHERE  cs.caseid = cm.caseid 
                          AND cs.lawyername IS NOT NULL) 

Если вы действительно хотите сделать это, используя GROUP BY, это можно сделать следующим образом.

select cm.caseid,cm.title
from CaseMaster cm
inner join CaseStages cs on cs.caseid=cm.caseid
group by cm.caseid,cm.title
having sum(case when cs.lawyerName is null then 0 else 1 end)=0

Демонстрационная версия

0 голосов
/ 19 марта 2019

Используйте "отдельное ключевое слово в вашем запросе, чтобы избежать дублирования.

0 голосов
/ 19 марта 2019

использовать не в

 select t1.* from casemaster t1
 where  caseid not in ( select caseid from casestages t2 where 
                      t2.laywername is not null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...