MySQL のビューのペアからの予約データがあります。これらは列と完全に一致します。主な違いは、これらの行のいずれかに配置される予約コードです。
コンテキストは次のとおりです。これは、スポーツ キャンプの数値を計算するためのものです。人々は予約されていますが、追加の活動を行うことができます。
ビュー 1: すべてのスペシャリストの予約 (例: フットボールのクラス)。
ビュー 2: 一般グループ。
ソフトウェアが古いため、予約プロセスで一般グループを予約する人が多くなり、その後、古いクラスにアップグレードされます。これは、ビジネスの他の部分でさらに複雑になります。
明確にするために、ビュー 1 には、実際にはビュー 2 内の一部 (すべてではない) の人々が含まれています。2 つのグループの共通部分があります。明らかに、人々が同時に 2 つのグループに属することはできません (グループは 1 つだけです!)。
もちろん、ビュー 2 にいるすべての人を見つけるのは簡単です... ビュー 1 と同様です。しかし、基本的に次のようなレポートを作成する必要があります。
- 「View 1」が「View 2」を上書きする...または別の言い方をすると:
- 「View 1」 [並べ替え] UNION 「View 2」
ただし、追加の複雑さがあるため、これを行う最善の方法はわかりません。
各行はおおよそ次のとおりです (他のものは省略されています)。
User ID Timeslot Activity
1 A Football
1 A General
2 A General
3 A Football
ご覧のとおり、これらの行はすべてタイムスロット A に関するものです。 - ユーザー 2 は一般的なアクティビティを行います。- ユーザー 3 はサッカーをします。- ユーザー 1 はサッカーと一般を行います。
これらの項目は一意ではないため、真に明確な行がないため、上記は UNION (個別) です。
必要な出力は次のとおりです。
User ID Timeslot Activity
1 A Football
2 A General
3 A Football
ここでは、サッカーが「一般」よりも「優先」されているため、いつでも人々がどこにいるかを把握できます。
この UNION には、多くのフィールドに個別の節がありますが、他の節は無視されます。
だから:誰かが何をする方法を知っていますか:
- 「2 つのテーブルを一緒に追加し、同じタイムスロットの場合はそのうちの 1 つを上書きします」
または次のようなもの:
- 「UNION DISTINCT での選択的個別」。
乾杯リック