'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