2017-09-09 16 views
1

私が使用しているSQLクエリは、個別の選択をカウントする際に問題があるようです。上記のクエリを使用してDISTINCTを選択してCOUNTを選択

+-------------+-----------+ 
| item_name | barcode | 
+-------------+-----------+ 
| apple  | 1283123 | 
| apple  | 1231231 | 
| apple  | 1231312 | 
| apple  | 1231312 | 
| bananas  | 1231312 | 
| bananas  | 1231312 | 
+-------------+-----------+ 

は私に

の出力を与える:次のように私は appleを含む4行と異なるバーコードと私のデータベースに bananaを含む2行を持って

SELECT DISTINCT a.item_name, 
       (SELECT count(c.item_name) FROM stocks c 
       WHERE a.item_name = c.item_name) as 'count' 
     FROM stocks a; 

:ここにクエリです

+-------------+-----------+ 
| item_name | barcode | 
+-------------+-----------+ 
| apple  | 5   | 
| bananas  | 2   | 
+-------------+-----------+ 

クエリは常に最初の行に1カウントを追加します。私の質問に何が間違っていますか?

+0

:http://sqlfiddle.com/#!9/f45a79/1 – BenM

+0

PHPは、この問題に関与していないGROUP BYCOUNT()を使用すると、同じ望ましい結果を提供します – axiac

答えて

3

なぜ、結合が必要なのですか?いいえ、そうでない

SELECT item_name, 
     COUNT(*) AS count 
    FROM stocks 
GROUP BY item_name; 
+0

謝罪先生が最初に学んだのは、これは私のコードによく合っています:)しかし間違った反復の原因を教えてもらえますか? –

+0

いいえ、できません。http://sqlfiddle.com/#!9/f45a79/1 – BenM

関連する問題