【发布时间】:2013-05-31 14:35:42
【问题描述】:
我有以下问题:
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) 中发生的奥运会参与者数量以及在同一时间发生的total 场比赛的数量countryName (q2)。它确实返回了一些东西,但结果是错误的。
它似乎返回了participantsin countParticipants 参与的游戏数量(对于给定的国家/地区),而不是返回我需要的内容(即总游戏数) .
现在,问题来自我的数据库中的数据,或者来自我的查询。能否请您检查一下,以便我知道在哪里更正问题?
非常感谢
注意:两个子查询的结果集返回相同的行数,并以相同的方式排序。
【问题讨论】:
-
你知道
GROUP BY是做什么的吗? -
是的,我知道它的作用。我有更多的中级 SQL 级别:)
-
你需要一个聚合来使用它。
-
你确定你不需要表 q1 和 q2 之间的任何关系吗?
-
@FreshPrinceOfSO 你能举个例子吗?