Einzelnen Beitrag anzeigen

hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Abfrage über mehrere Tabellen

  Alt 25. Mai 2007, 12:26
Datenbank: MS Access • Version: kA • Zugriff über: ADO
'loha Folks,

ich benötige etwas Hilfe. Im angehängten Bild sind die Beziehungen einiger Tabellen dargestellt.

Die Abfrage soll folgende Felder liefern:
Key.Code, Key.KeyID, Device_User.Access, Device_User.DeviceID

Der einzige Parameter für die Abfrage ist eine DeviceID.

In der Tabelle Device_User sowie Device_Key sind immer sämtliche Einträge aus der jeweils linken und rechten Tabelle vorhanden, in User_Key ist dies nicht der Fall.

Die Abfrage wird benötigt um Schlüssel auf Geräte zu Programmieren. Wenn ein Schlüssel mit einer Person in Beziehung steht, sollen dessen Zutrittsrechte übernommen werden, ansonsten wird der Zutritt verwehrt.

Leider sind meine bisherigen Versuche eine Abfrage zusammenzuschustern kläglich gescheitert. Ich hoffe deshalb auf etwas Beihilfe.

Meine bisherige, von Access verunstaltete Abfrage sieht so aus und liefert nur das Gewünschte Ergebnis wenn einem User ein Key zugeordnet ist. Vielleicht kann man darauf aufbauen:

[code=sql]
SELECT [Key].[Code], [Key].[KeyID], [Device_User].[Access], [Device_User].[DeviceID]
FROM ([User] INNER JOIN (([Key] INNER JOIN Device_Key ON [Key].[KeyID]=[Device_Key].[KeyID]) INNER JOIN User_Key ON [Key].[KeyID]=[User_Key].[KeyID] Or [User_Key].[KeyID] Is Null) ON [User].[UserID]=[User_Key].[UserID] Or [User_Key].[UserID] Is Null) INNER JOIN Device_User ON [User].[UserID]=[Device_User].[UserID]
WHERE [Device_User].[DeviceID]=[eviceID] And [Key].[KeyID]=[Device_Key].[KeyID] And ([User].[UserID]=[User_Key].[UserID] Or [User_Key].[UserID] Is Null)
GROUP BY [Key].
Code:
, [Key].[KeyID], [Access], [Device_User].[DeviceID];
Ich bin mir langsam auch nicht mehr sicher ob sich das gewünschte Resultat mit nur einer Abfrage realisieren lässt -.-

Grüsse
hirnstroem
Miniaturansicht angehängter Grafiken
qry_appendkey_174.jpg  
inde deus abest
  Mit Zitat antworten Zitat