두 개의 테이블이 있습니다.
exp_channel_titles
exp_relationships
exp_relationships에 정의 된 관계가있는 왼쪽 테이블 ( exp_channel_titles )에서 고유 한 행을 선택 하고 싶습니다 . 다음과 같이 할 수 있습니다.
SELECT DISTINCT exp_channel_titles.title
FROM exp_channel_titles
LEFT JOIN exp_relationships
ON exp_channel_titles.entry_id=exp_relationships.child_id
WHERE exp_relationships.child_id IS NOT NULL
AND exp_channel_titles.channel_id=5
AND exp_channel_titles.status='open'
문제는 관계에 사용되는 행에 대해 exp_channel_titles.status = 'open'을 확인하고 싶습니다. 나는 이것이 내 머리를 돌리기가 어렵다는 것을 알고 있으므로 더 잘 설명하려고 노력할 것입니다.
exp_channel_titles 에는 다음과 같은 내용이 포함됩니다.
entry_id | 제목 | 상태 | channel_id
1 | 유모 | 오픈 | 2
2 | 육아 | 오픈 | 5
3 | 유모 | 오픈 | 2
4 | 경영학 | 오픈 | 5
5 | 접수 | 폐쇄 | 2
exp_relationships 행 간의 관계를 정의 exp_channel_titles 사용 exp_channel_titles.entry_id 같은 exp_relationships.parent_id 및 exp_relationships.child_id를 . 따라서 위의 행은 다음과 같은 관계를 갖습니다.
parent_id | child_id
1 | 2
3 | 2
5 | 4
제가 위에서 설명 된 쿼리가 저를 줄 것이다 그래서 :
보육
경영학
하지만 경영학 (접수 원)과 관련된 유일한 항목이 '종료'상태이기 때문에이 항목이 표시되는 것을 원하지 않습니다. 쿼리가 보육 만 반환하기를 원합니다.
다음과 같은 별칭으로 테이블을 두 번 조인 할 수 있습니다.
SELECT DISTINCT
ect.title
FROM
exp_channel_titles ect
JOIN
exp_relationships er
ON ect.entry_id = er.child_id
JOIN
exp_channel_titles ect2
ON ect2.entry_id = er.parent_id
WHERE
ect.channel_id = 5
AND ect.status = 'open'
AND ect2.status = 'open'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다