2017-02-17 2 views
1

:これらの有名人から次にSQL列あいまいに定義されたエラー

Select CELEB 
From StarredIn 
INTERSECT 
Select CELEB 
From Releases; 

を、私は数をカウントする必要があります映画、およびこのクエリの各セレブのアルバム。ここで私はこれをやってみました方法は次のとおりです。

Select DISTINCT CELEB, COUNT(MOVIE) AS number_of_movies, COUNT(ALBUM) AS number_of_albums 
From StarredIn, Releases 
Where CELEB = 
(Select CELEB 
From StarredIn 
INTERSECT 
Select CELEB 
From Releases); 

私は神託でこれを実行すると、私は言ってエラーが出る「列があいまいに定義さ。」だから私はそれをどのように修正することができる?

ここで私はこのために使用しているテーブルです:

CREATE TABLE StarredIn (
    celeb VARCHAR(30), 
    movie VARCHAR(100) 
); 
CREATE TABLE Releases (
    celeb VARCHAR(30), 
    album VARCHAR(100) 
); 

答えて

1

あなたは以下のクエリを使用することができ、

SELECT A.CELEB, A.MOVIECOUNT, B.ALBUMCOUNT FROM 
(SELECT S.CELEB, COUNT(S.MOVIE) AS MOVIECOUNT FROM StarredIn S WHERE S.CELEB IN (SELECT DISTINCT CELEB FROM Releases) GROUP BY S.celeb) A, 
(SELECT R.CELEB, COUNT(R.ALBUM) AS ALBUMCOUNT FROM Releases R WHERE R.CELEB IN (SELECT DISTINCT CELEB FROM StarredIn) GROUP BY R.celeb) B 
WHERE A.CELEB = B.CELEB 
+0

今私はnエラーはS.ALBUM無効な識別子です。 –

+0

代わりにR.ALBUMとS.MOVIEを試してください:) –

+0

S.Celebは単一グループのグループ関数ではないと言われています。私がS.CelebをCelebと言うだけに変更すると、whereステートメントがあいまいに定義されているということに戻ります。 –

0

Select DISTINCT table1.ColumnName, COUNT(table2.ColumnName2) AS number_of_movies, COUNT(table1.ColumnName3) AS number_of_albums 
 
From table1, table2 
 
Where table1.ColumnName = ''

+0

同じ列はそう両方のテーブルに存在しますあなたの質問にtable1.column、table2.column2などを使用してください。 –

関連する問題