2012-03-25 1 views
0

Wie unten gezeigt, enthält die Tabelle Recording drei Fremdschlüssel, von denen nur einer für einen Eintrag ausgefüllt wird. Meine Frage ist, wie kann ich eine Select-Anweisung in Access formatieren, die nur die Namen aus der relevanten Tabelle mit dem Fremdschlüssel für diese Tabelle zieht?SELECT Abfrage, bei der nur eines von drei Feldern mit Fremdschlüsseln gefüllt ist

Ich habe versucht, IIf verwenden, die funktioniert, wenn die Überprüfung, welche Fremdschlüssel nach dem SELECT Not Null ist:

SELECT Recording.[idRecording], 
     IIf(Recording.[Artist_idArtist] Is Not Null, 
      Artist.[artName] , 
       IIf(Recording.[Band_idBand] is Not Null, 
         Band.[bName], 
         Composer.[cName])) 
FROM ... 

Aber alle Bedingungen nach der FROM-Anweisung setzen, die richtige JOIN, führt zu einem Fehler zu erhalten :

Ich bin neu hier, also vermisse ich wahrscheinlich etwas Offensichtliches, oder gehe es in die falsche Richtung. Ich glaube, was ich hier gefunden habe, ist ein exklusiver Bogen? Ich bin mir nicht sicher, ob das überhaupt ein guter Entwurf ist, ich hatte daran gedacht, den Aufnahmetisch zu verwerfen und einfach die Fremdschlüssel zu Track hinzuzufügen.

Denn hier Referenz ist die Beziehung Entwurf:

ER

Antwort

3

Sie das Problem lösen kann mit 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 

JOIN Sie kehren alle Datensätze auf der linken Seite der Tabelle bilden und nur die Datensätze aus der Tabelle auf der rechten Seite, für die die Join-Bedingung erfüllt ist.

Ich vereinfachte auch die IIf Kaskade mit der Nz Funktion, die das zweite Argument zurückgibt, wenn die erste null ist.

Ich verwende auch kurze Aliase für Tabellennamen und vereinfacht so die Abfrage weiter.

+0

Vielen Dank Sir, das funktioniert perfekt. – Gybe

Verwandte Themen