以下に示すように、テーブルRecording
には3つの外部キーが含まれています。私の質問は、どのように私はそのテーブルの外部キーを指定して関連テーブルから名前をプルするだけで、選択したステートメントをAccessでフォーマットできますか?SELECT外部キーを含む3つのフィールドのうち1つのみが入力されているクエリ
私は、外部キーがSELECTの後にヌルされていないチェックする際に働く式IIf、使用して試してみました:エラーで登録しよう
SELECT Recording.[idRecording],
IIf(Recording.[Artist_idArtist] Is Not Null,
Artist.[artName] ,
IIf(Recording.[Band_idBand] is Not Null,
Band.[bName],
Composer.[cName]))
FROM ...
しかし、文のFROMの後に任意の条件を入れて、正しい取得するには、結果を:
FROM
IIf(Recording.[Artist_idArtist] Is Not Null,
Artist INNER JOIN Recording ON Recording.[Artist_idArtist] = Artist.[idArtist],
IIf(Recording.Band_idBand Is Not Null,
Band INNER JOIN Recording ON Recording.[Band_idBand] = Band.[idBand],
Composer INNER JOIN Recording ON Recording.[Composer_idComposer] = Composer.[idComposer]));
私はこれに新たなんだので、私はおそらく何かを明らかに不足している、またはそれについて間違った道を進みました。私はここで終わったことは排他的な弧であると信じていますか?私はこれが良いデザインであるかどうかはわかりませんが、私はRecordingテーブルを破棄し、外来キーをTrackに追加することを考えました。 LEFTは、彼らはすべてのレコードが、左側だけにテーブルを形成返す
SELECT
R.idRecording,
Nz(A.artName, Nz(B.bName, C.cName))
FROM
((Recording R
LEFT JOIN Artist A
ON R.Artist_idArtist = A.idArtist)
LEFT JOIN Band B
ON R.Band_idBand = B.idBand)
LEFT JOIN Composer C
ON R.Composer_idComposer = C.idComposer
に参加してあなたが問題を解決することができます
ありがとう、それは完璧に動作します。 – Gybe