私が取り組んでいるいくつかのSQLでは、joinステートメントに少し問題があります。私の問題で私を助けることができるスマートな人がいるかどうか疑問に思った!そのような名前や電子メールなどのユーザ情報を含む - tblMember、tblResultとtblPointMS AccessでのSQL JOINの問題
tblMember:
は、私は3つのテーブルを結合するためにしようとしています。 tblResult - 彼らがレースを完了したフィニッシュポジションとタイムの詳細である限り、彼らがサインアップしたメンバーとレースの詳細を含む tblPoint - 人がレースでどのポジションを終了したかに関するポイントのセットを含む例えば、1位は10ポイント、2位は8ポイント、6ポイント以下はポイントが割り当てられません。
クエリがtblResult.ResultID、tblMember.MemberName、tblResult.PersonalTime、tblResult.FinishPosition、tblPoint.Pointsを返すようにします。しかし、FinishPositionが空で、ポイントが割り当てられていなくても、これらのフィールドをすべて返すようにします。
私はほとんどの下に、このSQLを使用して問題を解決した。しかし、これはかなりの仕事をしません
SELECT DISTINCT tblResult.ResultID, tblMember.MemberName, tblResult.PersonalTime,
tblResult.FinishPosition, tblPoint.Points
FROM (tblMember INNER JOIN tblResult ON tblMember.MemberID = tblResult.MemberID) LEFT
JOIN tblPoint ON tblResult.FinishPosition = tblPoint.Position;
。クエリから結果が返されると、すでに2位と指定されている人は、最初に割り当てられた1位のポイントで複数回返され、2回目に割り当てられた2位のポイントが返されます。
これはJOINの問題でなければなりません...しかし、私はそれを修正する方法を見ることができません! 私は既にIIFとISNULLを使ってみましたが、使用するのが適切ではないと思います。
LEFT OUTER JOIN、RIGHT OUTER JOINまたはFULL JOINをサポートしていないように見えるMS Accessを使用しています。
誰でも手助けできますか?これを読んでくれてありがとう。 :)
編集: [tblPoint]には、フィールド(PointID、RaceTypeID、Points、Position)が含まれています。各レースタイプには5つの行があります。 PointIDは主キーで、テーブルは次のようになります。
ポイントID - 1、RaceTypeID - 1は、ポイント - 10を、位置 - 1
ポイントID - 2、RaceTypeID - 1、ポイント - 6、ポジション - 2
ポイントID - 3、RaceTypeID - 、1ポイント - - 位、3 - - 3
ポイントID - 4、RaceTypeID 1、ポイント2、ポジション - 4
ポイントID - 5 、RaceTypeID_1、Points_1、Position_5。
これは、レースタイプ1の場合、1stが来れば10点、2ndは6点を獲得するということです。このテーブルは、異なるレースタイプをサポートすることができ、各レースタイプは独自のポイントシステムを備えています。
メンバはtblResultに何度でも出現することができます。メンバーが参加するために「サインアップ」されると、tblResultに表示され、終了位置や個人時間が割り当てられません。
私は少しのサンプルデータを投稿することをお勧めします。たとえば、メンバーが結果表に表示される頻度はどのくらいですか?ポイントテーブルに5行しかありませんか? – Fionnuala
アクセスは 'LEFT OUTER JOIN'と' RIGHT OUTER JOIN'をサポートしますが、 'FULL OUTER JOIN'はサポートしません(ただし、 'LEFT OUTER JOIN'と' RIGHT OUTER JOIN'は 'FULL OUTER JOIN'と同じです) 。 – onedaywhen
あなたの提案した情報を含めるためにオリジナルの投稿を編集しました。それが明確になる可能性はありますか? @onedaywhen。私はここに必要な完全な結合だと思いますか?私はオンラインで完全な外出を再現する方法に関する記事を見ました。 – LNB