[mysql] mysql에서 동일한 테이블에 두 번 어떻게 조인합니까?
2 개의 테이블이 있습니다. 하나 (도메인)에는 도메인 ID와 도메인 이름 (dom_id, dom_url)이 있습니다.
다른 하나에는 실제 데이터가 포함되어 있으며 그 중 2 개에는 TO 및 FROM 도메인 이름이 필요합니다. 따라서 두 개의 열 rev_dom_from 및 rev_dom_for가 있으며 둘 다 도메인 테이블에서 도메인 이름 ID를 저장합니다.
단순한.
이제 실제로 웹 페이지에 두 도메인 이름을 모두 표시해야합니다. LEFT JOIN domains ON reviews.rev_dom_for = domains.dom_url 쿼리를 통해 둘 중 하나를 표시하는 방법을 알고 있습니다. 그런 다음 rev_dom_for 열의 도메인 이름을 에코하는 dom_url을 에코합니다.
그러나 dom_rev_from 열에서 두 번째 도메인 이름을 어떻게 표시합니까?
답변
다음 줄을 따라 다른 조인을 사용합니다.
SELECT toD.dom_url AS ToURL,
fromD.dom_url AS FromUrl,
rvw.*
FROM reviews AS rvw
LEFT JOIN domain AS toD
ON toD.Dom_ID = rvw.rev_dom_for
LEFT JOIN domain AS fromD
ON fromD.Dom_ID = rvw.rev_dom_from
수정 :
당신이하는 일은 테이블에 여러 번 참여하는 것입니다. 게시물의 쿼리를 살펴보십시오. Reviews 테이블 (rvw로 별칭 지정)에서 값을 선택합니다. 해당 테이블은 도메인 테이블 (FOR 및 FROM)에 대한 2 개의 참조를 제공합니다.
이 시점에서 도메인 테이블을 Reviews 테이블에 조인하는 것은 간단한 문제입니다. FOR에 대해 한 번 (toD로 별칭 지정), FROM에 대해 두 번째 (fromD로 별칭으로 지정).
그런 다음 SELECT 목록에서 DOMAIN 테이블의 LEFT JOINS 모두에서 DOM_URL 필드를 선택하고 Domains 테이블을 참조하여 조인 된 각 테이블 별칭으로 참조하고 ToURL 및 FromUrl로 별칭을 지정합니다.
SQL의 별칭 지정에 대한 자세한 내용은 여기를 참조하십시오 .
답변
다음 표를 감안할 때 ..
Domain Table
dom_id | dom_url
Review Table
rev_id | rev_dom_from | rev_dom_for
이 SQL을 사용해보십시오 … (Stephen Wrighton이 위에서 작성한 것과 거의 동일합니다.) 트릭은 기본적으로 동일한 쿼리에서 도메인 테이블에서 두 번 선택하고 결과를 결합한다는 것입니다.
Select d1.dom_url, d2.dom_id from
review r, domain d1, domain d2
where d1.dom_id = r.rev_dom_from
and d2.dom_id = r.rev_dom_for
그래도 문제가 해결되지 않는 경우 정확히 이해하지 못하는 부분을 구체적으로 설명하십시오.
답변
이것을 읽고 시도해보십시오. 이것은 당신을 도울 것입니다 :
1 번 테이블
column11,column12,column13,column14
표 2
column21,column22,column23,column24
SELECT table1.column11,table1.column12,table2asnew1.column21,table2asnew2.column21
FROM table1 INNER JOIN table2 AS table2asnew1 ON table1.column11=table2asnew1.column21 INNER TABLE table2 as table2asnew2 ON table1.column12=table2asnew2.column22
table2asnew1
다음과 일치하는 테이블 2의 인스턴스입니다. table1.column11=table2asnew1.column21
과
table2asnew2
다음과 일치하는 테이블 2의 또 다른 인스턴스입니다. table1.column12=table2asnew2.column22