다음 ER 모델이 있습니다.
이 작업을 수행하는 postgresql 쿼리를 작성해야합니다.
다음과 같은 모든 기부자를 선택하십시오.
1)Diagnosis.name starts with "abc".
2)There should be a second Diagnosis.name for the same donor, and it should be "xyz"
이것을 샘플 데이터로 고려하십시오.
기부자 테이블에는 다음이 있습니다.
id| name
1 |John
2 |Sam
이벤트 테이블에는 다음이 포함됩니다.
id | event_type | donor_fk
1 | diagnosis | 1
2 | diagnosis | 2
3 | diagnosis | 2
4 | observation | 3
5 | intervention| 3
진단 테이블에는 다음이 포함됩니다.
id | name | event_FK
1 |abc | 2
2 |xyz | 3
diagnostic.name의 두 인스턴스가 동일한 기증자인지 어떻게 확인할 수 있는지 궁금합니다.
쿼리 결과는 "Sam"이라는 기부자에 대한 모든 데이터를 반환해야합니다.
이 질문을 게시 한 이후로 솔루션에 가까운 곳이 아닙니다. 진단 테이블의 자체 조인 방향으로 생각하고 있었는데이 테이블에는 자체에 대한 참조가 없으므로 자체 조인이 의미가 없습니다.
/ *별로 효율적이지는 않지만 약간 읽을 수있는 해결책은 다음과 같습니다. * /
select distinct a.*
from (
select do.id, do.name
from diagnosis diag
join event e on diag.event_fk = e.id
and upper(diag.name) like 'ABC%' /* here ya filter 1 */
join donor do on d.id = e.donor_fk
) a
join (
select do.id, do.name
from diagnosis diag
join event e on diag.event_fk = e.id
and upper(diag.name) like 'XYZ' /* here ya filter 2 */
join donor do on d.id = e.donor_fk
) b on a.id = b.id
;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다