가정하는 두 개의 테이블이 있습니다 조인 된 테이블에서 하나의 행을 선택하는 하위 쿼리에 가입은 MySQL이
Location PartNum Descrip
-------- ------- --------
Whse1 abc Frobbitz
Whse2 abc Frobbitz
Whse3 def Widget
Whse3 def Widget
테이블 상태 :
대부분의 경우Location PartNum Status
--------- ------- --------------
*Default* abc Ready To Ship
*Default* def Ready To Ship
Whse1 abc Backordered
, 기본 상태를 사용해야합니다. 이이 일을 가장 효율적으로 (또는 적어도 합리적으로 효율적으로) 방법,
SELECT p.Location,p.PartNum,p.Descrip,s.Status FROM Parts p
LEFT JOIN Status s ON s.PartNum=p.PartNum AND
s.Location = (SELECT MAX(Location) FROM Status s1
WHERE s1.PartNum=p.PartNum AND s1.Location
IN('*Default*',p.Location))
질문은 :
이 상태를 얻으려면, 쿼리처럼 보일 수 있습니다? 실제 응용 프로그램에는 단일 쿼리에서 최대 7 개의 테이블이 조인됩니다.
내 질문에 비해 더 나은 방법 아래에있는 세 가지 답변 중 하나가 있습니까? 결국, 제 질문은 "가장 효율적인 (또는 적어도 합리적으로 효율적인) 방법입니까?" –