当我尝试合并这两个查询时,为什么返回的计数错误

时间:2019-07-01 13:01:29

标签: sql

我需要获取表中返回的selectionswinnersplaces的数量。我的selections计数正确,但是当尝试正确计算win计数时,它要么不返回零计数,要么将所有返回值设为相同的值。

我以前没有尝试过子查询,现在已经尝试了好几天,所以现在该寻求帮助了。如果有人可以解释我对win的处理方式出了什么问题,那么我可以对place进行排序,这样我就不用自己计算了,因此我没有在下面的查询中添加place部分。

我尝试过left joinsright 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"

0 个答案:

没有答案