我有以下查询:
SELECT q2.name, q1.countParticipants, q2.countGames FROM
(
SELECT c.countryName AS name, count(p.idParticipant) AS countParticipants
FROM Country c, Participant p, Game g
WHERE p.fkGame = g.idGame AND c.idCountry = p.fkCOuntry AND c.countryName LIKE '%$countryName%'
GROUP BY c.countryName
ORDER BY c.countryName;
) AS q1 ,
(
SELECT c.countryName AS name, count(g.idGame) as countGames
FROM Country c, Game g
WHERE c.idCountry = g.fkHostCountry AND c.countryName LIKE '%$countryName%' GROUP BY c.countryName
ORDER BY c.countryName)
) AS q2
GROUP BY q1.name
ORDER BY q1.name
countryName
该查询应该返回在给定(q1) 中发生的奥运会的参与者人数以及在同一(q2)中发生的总比赛数。countryName
它确实返回了一些东西,但结果是错误的。
而不是返回我需要的东西(即游戏总数),它似乎返回了参与的游戏数量participants
(countParticipants
对于给定的国家)。
现在,要么问题来自我的数据库中的数据,要么来自我的查询。你能检查一下,以便我知道在哪里更正这个问题吗?
非常感谢
注意:两个子查询的结果集返回相同数量的行并且以相同的方式排序。