2011-03-29 7 views
2

두 개의 열이 where 절에서 같은지 비교하고 싶습니다. 열 두 개의 열이 where 절에 두 개의 열이 같은지 비교하는 경우

에 가입 된 다른 테이블 출신이다 내가

SELECT authors.state, sum(qty*price)as sales_revenue 
    from authors,titles, stores, sales 
WHERE authors.state = (SELECT stores.state from stores) 

을 사용하고있는 문이다 그러나 나는

sg 8120, Level 16, State 1, Line 1 
Column 'authors.state' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 
+1

그냥 참고 : 제목의 데카르트 제품이있다. + 판매 + (저자 + 제목). 따라서 쿼리에서 반환 된 데이터는 의미가 없습니다. – zerkms

+0

지금 쿼리를 게시 할 수 있습니까? 또한 수량과 가격이 둘 이상의 테이블에 정의되어 있습니까? – JPM

답변

4

사용이 M을 말한다 오류가 이 :

WHERE authors.state = stores.state 

또는 더 좋게는 ANSI-92 JOIN 구문을 사용하십시오.

SELECT authors.state, sum(qty*price) as sales_revenue 
FROM authors 
JOIN stores ON authors.state = stores.state 
JOIN titles ON ... 
JOIN sales ON ... 
GROUP BY authors.state 
+0

내가 그랬어 동일한 오류가있어 –

+2

@Steffan Harris : 누락 된 ON과 GROUP BY를 추가해보십시오. –

+0

@Steffan'SELECT'리스트에서 집계 함수를 사용할 때'GROUP BY' 절을 추가해야합니다. 이 경우, 그것은'GROUP BY authors.state' 일 것입니다. – Phil

0

이 :

SELECT a.state, 
     sum(l.qty*l.price)as sales_revenue 
     FROM authors a 
     LEFT JOIN stores s on a.state=s.state 
     GROUP BY a.state 

당신의 관계를 확인할 수 있도록 각 테이블에서 사용할 수있는 열을 지정

예를 들어

authors = id,state 
store = id,store 

감사

관련 문제