2016-10-06 3 views
0

3 테이블 조인시 그룹을 사용해야합니다. '도요타'이 같은 모델에 속하는 동안 나는, 판매중인 자동차의 가격 합계도 모델 (자동차)이그룹화 기준 3 테이블 조인 SQL

'어코드'가 나타납니다 2 번 속한 20로 요약 어떤 카테고리에 표시해야 동일한 모델에서 합산되었습니다. 그리고 마지막으로 'Bellen'에만 1 대의 자동차가 있습니다. 모든 합계 된 가격과 모델과 함께 각 모델의 카테고리도 행별로 표시됩니다. I 합류하고 아래 쿼리로 가격을 합산하고 있지만

enter image description here

내가 조건에 따라 그룹화 할 수 없었던 제 3 테이블의 열에 의해 야기되는 추정 오차를 나타낸다. 필요한 결과를 어떻게 얻을 수 있습니까?

은 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다.

SELECT sum(cars.price),models.model,categories.category 
FROM cars 
INNER JOIN 
models 
ON cars.mid=models.id 
inner join 
categories 
on models.model=categories.model 
group by models.model ORDER BY cars.name 
+1

categories.category별로 그룹화하거나 옵션을 제거해야합니다. select 절의 모든 열은 집계이거나 그룹 기준으로 표시되어야합니다. 당신은 왜 똑같은 모델과 동일한 카테고리라면 다른 하나의 라인을 필요로합니까 – MageeWorld

+0

당신은 정확합니다 거기에 실수를했습니다, 나는 같은 모델의 자동차 가격이 따로 따로 합쳐져야합니다 – phpnet

+0

당신의 이미지에 당신을 명확히하기 위해서 차라고 부르는 테이블을 가져라. 차가 될 것인가 아니면 차가 될 것인가? – Louie

답변

2

테이블 이름/열 이름이 다이어그램에서 올바른지 가정

데이터 :

CREATE TABLE car (price INT, name NVARCHAR(128), mid INT) 
GO 

INSERT INTO car 
VALUES (10, 'Accord', 1), 
     (10, 'Accord', 1), 
     (30, 'Bellen', 3), 
     (40, 'Toyota', 1) 
GO 

CREATE TABLE models (id INT, model INT) 
GO 

INSERT INTO models 
VALUES (1, 1889), 
     (2, 1999), 
     (3, 2000) 
GO 

CREATE TABLE categories (model INT, category NVARCHAR(128)) 
GO 

INSERT INTO categories 
VALUES (1889, '800 cc'), 
     (1999, '1200 cc'), 
     (2000, '1500 cc') 
GO 

검색어 :

SELECT sum(car.price) "Sum Price", models.model "Model", categories.category "Category" 
FROM car 
INNER JOIN models ON car.mid=models.id 
INNER JOIN categories ON models.model=categories.model 
GROUP BY models.model, categories.category 
ORDER BY models.model, categories.category 

결과 :

Sum Price Model Category 
60   1889 800 cc 
30   2000 1500 cc 
+0

erorrs 제공 : '다중 부분 식별자 "cars.name"을 바인딩 할 수 없습니다.' '다중 부분 식별자 "cars.name"을 바인딩 할 수 없습니다.' '멀티 파트 식별자 "categories.category"를 바인딩 할 수 없습니다. – phpnet

+1

cars.net에 의해 그룹을 제거하는 대답을 편집했습니다. select 문에 포함되어 있지 않았으므로 거기에 있어서는 안됩니다. car 이름이 필요한 경우 select 문에 cars.name을 추가하고 유지해야합니다. 그룹별로. select 문에있는 경우 group by 절에 집계 OR이 있어야 함 - 항상 – MageeWorld

+0

@phpnet 다이어그램을 다시 확인할 수 있습니까? 테이블 이름/열 이름을 확인할 수 있습니까? 필자의 테이블 이름/열 이름을 사용하여 테스트 했으므로 잘 작동합니다. – Louie