2014-11-07 2 views
0

두 테이블 사이에 다 대다 관계가 있으며이를 관리하기 위해 피벗 테이블을 사용하고 있습니다. 다음 구조는 다음피벗을 사용하여 여러 테이블에서 MySQL을 선택하십시오.

  • 표 1 : 자동차 (car_id, ...)
  • 표 2 : 브랜드 (brand_id, ...)
  • 피봇 테이블 : cars_brands (car_id, brand_id, units, discount)

하나의 쿼리 만 사용하여 특정 브랜드 PLUS의 자동차의 모든 필드를 선택하려고합니다. 단위와 할인 (피벗 테이블의 두 필드 ...)

내 시도 :

SELECT c.*, cb.units, cb.discount 
FROM (cars c, cars_brands cb) 
INNER JOIN cb ON c.car_id = cb.car_id 
WHERE cb.brand_id = 1 
ORDER BY c.car_id asc 

가 나는

#1066 - Not unique table/alias: 'cb'

MySQL의 오류를 얻고있다.

도움을 주시면 감사하겠습니다.

미리 감사드립니다.

SELECT c.*, cb.units. cb.discount 
FROM cars AS c 
JOIN car_brands as cb ON cb.car_id = c.car_id 
JOIN brands AS b ON b.brand_id = cb.brand_id 
WHERE b.brand_name = 'Audi' 
ORDER BY c.car_id ASC 
+0

어딘가에 '브랜드'테이블에 가입해야합니다. 'Audi'는 정말로'brand.id'가 아니라'brand_id'입니까? – Barmar

+0

당신의 쿼리가 완전하지 않다는 것을 알았습니다. 내부 조인은 테이블 이름을 잃어 버렸습니다. 동일한 테이블을 두 번 사용한다면 'cars_brands cb'와'cars_brands cb1'와 같은 고유 한 별칭을 부여해야합니다. –

답변

3

나는 당신이 원하는 것은 생각 -.

선택 C를 *, cb.units는, 자동차 C에서 cb.discount이, B 브랜드 CB를 cars_brands 여기서 c.car_id = cb.car_id 및 b.brand_id = cb.brand_id 및 cb.brand_id = 8888 order by cb.car_id asc;

+0

그게 바로 제가 원했던 것입니다. 고마워요! – andcl

0

당신이 시도 할 수 있습니다 :

관련 문제