次のクエリがあります。
SELECT a.link_field1 AS journo, count(a.link_id) as articles, AVG( b.vote_value ) AS score FROM dan_links a LEFT JOIN dan_votes b ON link_id = vote_link_id WHERE link_field1 <> '' and link_status NOT IN ('discard', 'spam', 'page') GROUP BY link_field1 ORDER BY link_field1, link_id
このクエリは、リストの最初のアイテムに対して3のカウントを返します。返されるものは
Journo | count | score
John S | 2 | 6.00
Joe B | 1 | 4
ただし、最初のJohn Sの場合は、3のカウントを返します。
直接問い合わせたら
select * from dan_links where link_field1 = 'John S'
期待どおりに2つのレコードが返されます。なんらかの理由でdan_voteテーブルのレコードをカウントしていない限り、カウントが間違っている理由を一生理解することはできません。
どうすれば正しいカウントを取得できますか、またはクエリが完全に間違っていますか?
編集:表の内容
dan_links
link_id | link_field1 | link | source | link_status
1 | John S | http://test.com | test.com | approved
2 | John S | http://google.com | google | approved
3 | Joe B | http://facebook.com | facebook | approved
dan_votes
vote_id | link_id | vote_value
1 | 1 | 5
2 | 1 | 8
3 | 2 | 4
4 | 3 | 1
編集:何らかの理由で投票テーブルの行をカウントしているようです