次の行を持つinfo(名など...)を持つ「users」というテーブルがあります。
username
----------
mikha
guy
maricela
次の行を持つ「質問」と呼ばれる別のテーブル:
asker
----------
mikha
mikha
maricela
guy
maricela
次の行を持つ接続と呼ばれる別のテーブル:
username1
----------
guy
mikha
mikha
ユーザー「mikha」に関する情報を選択したいと思います。これには、彼がquestions.askerであるとき、および彼がconnections.username1であるときのカウントが含まれます。次のクエリを使用します。
SELECT COUNT(questions.asker) AS asking,COUNT(connections.username1) AS following
FROM users LEFT JOIN questions ON users.username = questions.asker
LEFT JOIN connections ON users.username = connections.username1
WHERE users.username = 'mikha'
推測される結果:
asking: 2 (as mikha is found 2 times asking)
following: 2 (as mikha is found 2 times following)
実績:
asking: 4
following: 4
を使用するCOUNT(DISTINCT questions.asker)
とCOUNT(DISTINCT connections.username1)
、名前が1回だけカウントされるため、結果は常に1になります。GROUPBYも無駄に試してみました。
では、重複を回避するためにdistinctを使用し、同時に1つだけでなく、常に同じ名前をカウントするにはどうすればよいですか?
このフィドルは、問題を自分でテストするために作成しました。
よろしくマイケル