データの参照セットを含むmySQLテーブルがあります。この参照データの更新または追加エントリを説明するデータを含む別のテーブルがあります。さまざまな理由から、ここでは説明しませんが、特定のユーザーがやって来てレコードを作成するときに、参照データが変更されないようにすることが重要です(したがって2番目の表)。これらのテーブル間のスキーマは、2キーの複合主キーを持つ「カスタム」テーブルを除いて同じです。これらの列の1つは、「カスタム」テーブルと参照テーブルの間で共有されます。
これらのテーブルで単一のSQLステートメントで実行したいビジネスロジックは次のとおりです。
参照テーブルにあるものと同じキー値を持つレコードが「カスタム」テーブルに存在する場合は、「カスタム」を使用します。それ以外の場合は、参照値を取得します。
RIGHT JOINを使用したり、UNIONオペレーターを少しひねって戻ってくるものを制御したりできるのではないかと思いました。しかし、私はSQLのロジックをスクランブリングし続けています。JOINは、一方のテーブルから情報をフェッチして、もう一方のテーブルと結合しますが、これは私が実際に探しているものではありません。UNIONは、テーブル間の重複を削除するだけです。
何かのようなもの:
SELECT*FROMカスタムUNIONSELECT*FROMリファレンス
これを除いて、すべての列が同じである場合、単に重複を削除します。いずれかが異なる場合(カスタムエントリが存在するために存在するため)、UNIONは両方のテーブルの内容をまとめる以外に何もしません。
私はこれについてすべて間違っていますか?
あなたが提供できる洞察に感謝します。