2017-04-25 8 views
0

私はテーブルのようにしました行のそれぞれに、それを示しています。mysqlの数の本とは、例えば

user_id | book  | 
------------------ 
1  | aaaa  | 
1  | bbbb  | 
2  | aaaa  | 
3  | cccc  | 

そして今、私は、各行のすべてのユーザー帳の総和でデータを選択したい

user_id | book  | count(book) 
--------------------------------- 
1  | aaaa  | 2 
1  | bbbb  | 2 
2  | aaaa  | 1 
3  | cccc  | 1 

誰か助けてくれますか?それを

select user_id, book, (select count(1) from table as table2 where user_id = table.user_id) as count_book 
form table 
+2

間の結合を使用することができますか? – Jens

+1

user_id 1にbook aaaaが3回あるとしたら、カウントは3か1か、それはできません... – brad

+0

この宿題はありますか?あなたの実際の問題は何ですか?なぜあなたはuser_id 1と 'bbbb'の数が2になるのですか?図書「bbbb」は、表示されているサンプルデータに1回だけ存在します。私はあなたがこれを考えて、あなた自身で質問を書いて、あなたが特定の問題を抱えている場合にのみ戻ってくることをお勧めします。 StackOverflowはクエリを書くためのものではありません。そして、あなたが自分自身を試していない場合、ほとんどまたは何も学ばない。 –

答えて

0

使用あなたがこれまでに試してみました何のスタート台と数

select a.user_id, a.book , b.book_count 
from my_table 
inner join (
    select user_id, count(book) as book_count 
    from my_table 
    group by user_id 
) b on a.user_id = b.user_id 
+1

GROUP BYを使用せずに相関サブクエリが必要です。 – jarlh

+0

ありがとう@jarlh、答えが更新されました。 – hkutluay

+1

あなたは少なくともエイリアスを見逃しています( 'user_id = table.user_id)を数えてください ' – Jens

0

を行うには、サブ選択

+1

' b'を忘れました。 – jarlh

+0

@ jarlh多くのありがと... bテーブル名を追加.. – scaisEdge

関連する問題