0

従来の ASP で使用している MS SQL ステートメントで問題が発生しました。Microsoft SQL SMS でステートメントを使用すると、正しい答え (4) が得られますが、ASP では結果 2 しか得られません。

私が求めている結果は、1 つ以上のアイテムを公開している異なるアーティストの数です。

私が使用するステートメント -

SELECT Count(*) AS CountArtists 
FROM Tekster 
WHERE Published='True' 
GROUP BY Artist  

データ - 表(テキスト)

Artist    -   Published  
Person1       yes  
Person1       no  
Person1       yes  
Person2       yes  
Person3       yes  
Person3       no  
Person3       yes  
Person4       no  
Person4       no  
Person4       no  
Person5       no  
Person5       yes  
Person6       no  
4

5 に答える 5

0

Published フィールドのデータ型がビットの場合は、Published = 1 を使用します。

于 2012-08-14T16:27:46.453 に答える
0

接続文字列が両方のクエリで同じであることを確認してください。思っているよりも異なるデータベースにアクセスしている可能性があります。

また、クエリは をチェックしてTrueいますが、データは と表示されていることに注意してくださいyes/no。それはどれですか?

于 2012-08-14T16:20:39.863 に答える
0

データに「はい」と「いいえ」が含まれているのに、なぜ「published = 'true'」と言っているのですか。

published = 'yes' でクエリを実行してみてください。

また、値 4 が必要な場合は、count(*) の代わりに「count(distinct artist)」を実行する必要があります。

于 2012-08-14T16:21:22.697 に答える
0

元のクエリは、where句を修正すると、アーティストごとに、テーブル内のすべての行の数が表示されpublishedますyes|true。おそらくいくつかのゼロ値が得られます。

必要な結果を取得し、「1 つまたは複数のアイテムを公開しているアーティストは何人ですか?」という質問に答えるには、次のようなことを行う必要があります。

select count(*)
from ( select artist
       from Tekster
       where published = 'yes'
       group by artist
       having count(*) > 1
     ) published_artist pa

仮想テーブル (サブクエリ) は、公開されたアーティストのセットを提供します。外側のクエリは、公開されたアーティストの数を示します。

于 2012-08-14T16:22:47.283 に答える
0

SELECT COUNT(DISTINCT Artist) AS CountArtists FROM Tekster WHERE Published='True'

于 2012-08-14T16:23:21.573 に答える