我需要获取表中返回的selections
,winners
和places
的数量。我的selections
计数正确,但是当尝试正确计算win
计数时,它要么不返回零计数,要么将所有返回值设为相同的值。
我以前没有尝试过子查询,现在已经尝试了好几天,所以现在该寻求帮助了。如果有人可以解释我对win
的处理方式出了什么问题,那么我可以对place
进行排序,这样我就不用自己计算了,因此我没有在下面的查询中添加place
部分。
我尝试过left joins
,right joins
,如果我手动输入ID
并将其包含在where语句中,则可以获得零计数。但是,如果不输入ID
号,它将无法正常工作。
SELECT DISTINCT
www_users.user_login,
www_race_cards_selections.TipsterID,
count(TipsterID) TipsterID_count,
q.Win_count
FROM
www_race_cards_selections
JOIN
www_users
ON www_race_cards_selections.TipsterID = www_users.ID,
(
SELECT
www_race_cards_results.place,
count(place) Win_count
FROM
www_race_cards_selections
left join
www_race_cards
ON www_race_cards_selections.SelectionID = www_race_cards.ID
right Join
www_race_cards_results
on www_race_cards.RaceName = www_race_cards_results.race_name
left join
www_race_cards_date
on www_race_cards.Date = www_race_cards_date.ID
WHERE
www_race_cards.Date = www_race_cards_results.race_date
and www_race_cards.Horse = www_race_cards_results.horse_name
and www_race_cards_results.place = '1st'
and www_race_cards_selections.Eachway = "N"
) q
Where
www_race_cards_selections.void = ''
GROUP BY
www_race_cards_selections.TipsterID
ORDER BY
TipsterID
返回user_login(sapper1971,chris,测试帐户)TipsterID(1,11,19)TipsterID_count(73,1,5)和Win_count(9,9,9)
但是应返回user_login(sapper1971,chris,测试帐户)TipsterID(1,11,19)TipsterID_count(73,1,5)和Win_count(9,0,0)
下面的单独代码将返回零计数,但您必须输入id号,以便我知道零计数有效。
select distinct
www_users.user_login,
count(www_race_cards_selections.TipsterID) win_Count
from
www_users
left join
www_race_cards_selections
on www_users.ID = www_race_cards_selections.TipsterID
join
www_race_cards
on www_race_cards_selections.SelectionID = www_race_cards.ID
join
www_race_cards_results
on www_race_cards.Horse = www_race_cards_results.horse_name
where
www_race_cards_selections.TipsterID = "19"
and www_race_cards_selections.Void = ""
and www_race_cards.Date = www_race_cards_results.race_date
and www_race_cards_results.place = "1st"
and www_race_cards_selections.Eachway = "N"