2017-01-06 5 views
0

動作しません。私はこのSQLサブクエリが

SELECT GenreNaam, 
GenreCount = (SELECT COUNT(GK.GenreID) 
       FROM GenreKoppel GK 
       WHERE GK.GenreID = G.GenreID) 
FROM Genre G 

のようなサブクエリを記述しようとしています。しかし、私はエラー

1054を取得 - 'フィールドリスト'

不明な列 'GenreCount'

サブクエリの新機能は間違っています。

+2

私は、 'Alias = something'を使ってカラムエイリアスを与えることをサポートしているとは思っていません。何かをGenreCountとして試してください。 – Lamak

+0

' GenreCount = '?それは有効ですか? –

+1

@ Fred-ii-これはSQL Serverにありますが、MySQLでサポートされていないと思います。 – Lamak

答えて

4

MySQLでは機能しないSQL Serverスタイルの別名定義を使用しています。代わりに、ASを使用してエイリアスを指定します(または、サブクエリの後にエイリアスの名前を記述するだけです)。

SELECT GenreNaam, 
     (SELECT COUNT(GK.GenreID) FROM GenreKoppel GK 
     WHERE GK.GenreID = G.GenreID) AS GenreCount -- or just GenreCount 
FROM Genre G 

このクエリにも参加使って書くことができます

SELECT G.GenreNaam, 
     COALESCE(GK.GenreCount, 0) AS GenreCount 
FROM Genre G 
LEFT JOIN 
(
    SELECT GenreID, COUNT(*) AS GenreCount 
    FROM GenreKoppel 
    GROUP BY GenreID 
) GK 
    ON G.GenreID = GK.GenreID 

をこの代替アプローチは、サブクエリを使用しますが、それはあなたの元のクエリ内の1つのとは違って相関していません。私は、ジョイン・アプローチが一般的に速く実行されることを期待しています。

+0

ありがとう、私はインターネット上でいくつかの例を探しました。それはmysqlで動作しないことを実現しない –

+0

なぜこれはdownvoteを取得しましたか?または私は何かを逃したことがありますか? –

+0

ティム、何か喫煙していますか? – Strawberry