2013-11-29 3 views
0

가입했습니다. 두 개의 다른 상품 ID에 대한 상품 ID에 상품 테이블을 가입시켜 두 상품의 이름을 수집하고 싶습니다. 예를 들면 다음과 같습니다 : -하나의 결합으로 테이블에서 여러 항목을 가져 오는 방법은 무엇입니까?

ON first_item_id = first_id 

다음 이동 여기

SELECT first_item_name, second_item_name FROM items JOIN order_table ON ... 

와 내가 붙어있는 곳입니다 제가 효율적으로해야 할 것은이 한 테이블에 조인하고, 첫 번째는 첫 번째 항목의 이름을 선택합니다 다시 참여하고 다른 참여와 함께 두 번째 항목의 이름을 선택하십시오.

ON second_item_id = second_id 

내 질문은 단일 가입 내에서 수행 할 수 있습니까?

감사합니다.

+0

구조를 줄 수 있습니까? –

답변

0

단어에서; 제

염두에 두어야 할 점은

On value = value 

절은 각 튜플에 대해 TRUE로 평가되어야한다는 것이다 만든 (효과 레코드로 튜플 생각하지만, 조인에 의해 생성 된 기록) 어울리다. 따라서 첫 번째 튜플에 대해 tableA.col1 = tableB.col1이 true 인 경우은 두 번째 튜플의 tableA.col1 = tableB.col1에 대해서도 마찬가지입니다. 동시에 true 일 수 없습니다. 여기 주름이 있습니다. 두 경우 모두 tableA.col1 = tableB.col1하지만 개별적으로 각 튜플에 대해서만 묻습니다. 동시에 tuple1과 tuple2를 가질 수 있습니까?

동일한 테이블에 두 번 이상 가입하는 것에 대해 신경 쓰지 마십시오. 그것은 본질적으로 나쁜 성과를 야기시키지 않거나 다른 어떠한 이유로 든 피할 수없는 잘못이 아닙니다.

+0

GetItemName (ItemID)과 같이 mysql 함수를 만들 수있다. 나는 그것이 성능 문제를 일으키지 않을 것이라고 동의한다. 동일한 대형 테이블에 여러 번 가입하면 성능이 저하됩니다. – Davos

+0

"본질적으로 성능 저하를 일으키지 않습니다"실제로 모든 진술은 나쁜 성능을 초래할 위험이 있습니다. 테이블 자체에 결합하면 고유 한 위험이 없습니다. 다중 조인, 인덱싱되지 않은 조인, 2 개의 큰 데이터 세트 조인 등은 종종 나쁜 성능을 유발할 수 있습니다. 주어진 테이블에 대한 다중 조인이라는 특별한 사실이 아닙니다. – Karl

+0

귀하의 진술은 논리적으로 사실이지만 그 의미는 유용하지 않습니다. "수시로 일으킬 수있는"대 "본질적으로"는 논리적 인 지점이지만, 그러한 종류의 토론을 즐기는 동안 그것은 OP를 돕지 못합니다. 반면에 SQL은 매우 현학적 인 언어이므로 아마도 그런 식으로 생각하기 시작할 수 있습니다. – Davos

관련 문제