私はMS Accessデータベースに5つのテーブルを持っています:tblMember、tblPoint、tblRace、tblRaceTypeおよびtblResult。 (すべてに主キーがあります) tblPointに(RaceTypeID、Position、Points)フィールドが含まれています。JOIN、SUM、GROUP BYのSQL SELECTクエリ
私がしたいことは、メンバーが参加したレースを見て、彼らがどの位置に来たのか(tblResultに格納されているかどうか)、それらのポイントがポイントを獲得している(tblPointで定義されている)かどうかを確認することです。次に、各メンバーのすべてのポイントを合計して、それらのメンバーと一緒に、私のクエリのメンバー名と共に表示したいと考えています。
これは可能ですか?私は以下のこのSQLクエリで私の最高のショットを思い付いた:
SELECT Sum(tblPoint.Points) AS SumOfPoints, Count(tblRace.RaceID) AS CountOfRaceID,
tblMember.MemberName, tblPoint.Points
FROM ((tblRaceType INNER JOIN tblPoint ON tblRaceType.RaceTypeID = tblPoint.RaceTypeID)
INNER JOIN tblRace ON tblRaceType.RaceTypeID = tblRace.RaceTypeID) INNER JOIN
(tblMember INNER JOIN tblResult ON tblMember.MemberID = tblResult.MemberID) ON
tblRace.RaceID = tblResult.RaceID
GROUP BY tblMember.MemberName, tblPoint.Points
ORDER BY tblPoint.Points DESC;
は全く正しい方向に私を指すことができ、誰ですか?
私はあなたがSQLであまりにも多くの方法を達成しようとしていると思う... Atleast私はあなたが今までのあなたの質問をうまくやったと言うことができます...しかし、ここでの問題は結果セットこれは私には不可能なように見える...私にはこの問題/問題は、アプリケーションのビジネスロジックで扱われなければならない...複数のクエリ結果で所望のフォーマットを構築できるところ... – NiK
謝罪、それは満足できるものではない1レースに入って、同じレースで最初に来た人のための瞬間、同じmemberNameを複数回返します。毎回、第1、第2、第3などのポイントを割り当てます。 私はあまりにもやろうとした多く! – LNB
@LNB:特別なトリッキーなことなしにプレーンSQLでこれを行うことは、実際には可能です。あなたは実際にあなたのソリューションに非常に近いですが、問題はあなたがポイント別にグループ化していることです(私の答えを見てください)。また、結果とポイントの間にはリンクがないため、すべてのプレースメントについてすべてのポイントが得られます。 – Martin