|
いくつか疑問点があります。
テーブルAとテーブルBの各主キーは、何なのでしょうか。
テーブルAのカメとウサギの各レコードの色フィールドの値は、Nullですか、
それとも長さ0の文字列ですか。
テーブルBのカメとウサギの各レコードの色フィールドの値は、Nullですか、
それとも長さ0の文字列ですか。
これらの質問がヒントになると思うのですが、念のため、補足しておきます。
最もデータベースらしい解決は、
テーブルBに主キー(例えば商品ID)を持たせ、
テーブルAの商品名フィールドと色フィールドは削除して、
テーブルAに外部キーとして商品IDフィールドを設け、
テーブルAの商品IDフィールドとテーブルBの商品IDフィールドを結合フィールドとする
という方法です。
商品名と色の各フィールドを2つのテーブルに持つのは、
データベースにおける一事実一箇所の原則に反します。
他の方法としては、
両テーブルの色フィールドについて「何も入らない」を
長さ0の文字列で表現するという方法があり得ます。
Null値同士は紐付けできないのですが、長さ0の文字列であれば紐付け可能です。
さらに別の方法として、
色フィールドについて「何も入らない」をNullで示すことを前提とするなら、
結合条件を
Nz(テーブルA.色,"") = Nz(テーブルB.色,"")
とするという方法も考えられます。
なお、このクエリは、クエリのデザインビューでは作れません。
SQLビューで作る必要があります。
また、結合条件の中でNz関数を使うので、速度的に不利です。
|
|