2011-03-29 87 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 2011-03-29 03:49:30

+0

你現在可以發佈你的查詢嗎?另外,是否在多個表格中定義了數量和價格? – JPM 2011-03-29 04:17:26

回答

4

使用錯誤這個:

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

我這樣做,並得到相同的錯誤 – 2011-03-29 03:45:02

+2

@Steffan哈里斯:嘗試添加缺少ON和GROUP BY。 – 2011-03-29 03:47:29

+0

@Steffan在'SELECT'列表中使用聚合函數時,需要添加一個'GROUP BY'子句。在這種情況下,它將是'GROUP BY authors.state' – Phil 2011-03-29 03:48:00

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 

問候