次のクエリがあります。
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
) 参加したゲームの数を返すようです。
さて、問題はDBのデータから、またはクエリから発生します。問題を修正する場所がわかるように、チェックアウトしていただけますか?
どうもありがとうございました
注: 両方のサブクエリの結果セットは、同じ数の行を返し、同じように並べられます。