我試圖計算一段時間內男性賽馬(Sire)的所有後代獲得的金額。由贏得的金額最高的父親列出。 我運行查詢並獲得結果後,有一個問題,我不能顯示姓氏,只有他們的ID。Mysql Self加入以查找同一個表中的父母子女關係
SELECT `horses`.`SireID` AS `SireID` , `horses`.`HorseName` AS `Sire Name`,
COUNT( `runs`.`HorsesID`) AS `Runs` ,
COUNT(
CASE WHEN `runs`.`Finish` =1
THEN 1
ELSE NULL
END) AS `Wins` ,
CONCAT(FORMAT((
COUNT(
CASE WHEN `runs`.`Finish` =1
THEN 1
ELSE NULL
END)/COUNT
( `runs`.`TrainersID`)) *100, 0) , '%'
) AS `Percent` ,
FORMAT(SUM( `runs`.`StakeWon`) , 0) AS `Stakes`
FROM runs
INNER JOIN horses ON runs.HorsesID = horses.HorsesID
INNER JOIN races ON runs.RacesID = races.RacesID
WHERE `races`.`RaceDate` >= STR_TO_DATE( '2012,07,01', '%Y,%m,%d')
AND `races`.`RaceDate` < STR_TO_DATE( '2012,07,01', '%Y,%m,%d') + INTERVAL 1
MONTH
AND `horses`.`SireID` <> `horses`.`HorsesID`
GROUP BY `horses`.`SireID`, `horses`.`HorseName`
ORDER BY SUM( `runs`.`StakeWon`) DESC
例如,在馬錶中記錄一匹馬有馬匹,他們也有一個sireID(他們的父親)。 sireID在同一張表中的另一個記錄中具有相同的horsesID,因爲它也是一匹馬
基本上我需要將horseName映射到sireID。
我認爲自我加入會起作用。
`AND `horses`.`SireID` <> `horses`.`HorsesID``
但它不會返回對應於SireID的正確的Sire名稱。
好了,那很有效:)我沒有想過LEFT JOIN能夠爲此工作,感謝啓蒙。 – stemie