W uproszczeniu są trzy tabele, Serials (główna), Users i Devices:
Serials:
ID: INTEGER
Serial: VARCHAR(20)
DeviceType: INTEGER (klucz obcy Devices.ID)
CreatedBy: INTEGER (klucz obcy Users.ID)
ModifiedBy: INTEGER (klucz obcy Users.ID)
Users:
ID: INTEGER
FirstName: VARCHAR(50)
LastName: VARCHAR(50)
Devices:
ID: INTEGER
DeviceName: VARCHAR(20)
Jakie powinno być zapytanie do bazy, aby przedstawić całą główną tabelę Serials, w której klucze obce zostaną zastąpione nazwami z tabel Users i Devices, czyli wynikowa tabela będzie miała kolumny np. takie:
Serial | DeviceName | CreatedByFirstName | CreatedByLastName | ModifiedByFirstName | ModifiedByLastName |
---|---|---|---|---|---|
gdzie |
Serial: pochodzi oczywiście z tabeli Serials
DeviceName: nazwa urządzenia z tabeli Devices.DeviceName określona na podstawie klucza Serials.DeviceType
CreatedByFirstName: imię użytkownika z tabeli Users.FirstName określone na podstawie klucza Serials.CreatedBy
CreatedByLastName: nazwisko użytkownika z tabeli Users.LastName określone na podstawie klucza Serials.CreatedBy
ModifiedByFirstName: imię użytkownika z tabeli Users.FirstName określone na podstawie klucza Serials.ModifiedBy
ModifiedByLastName: nazwisko użytkownika z tabeli Users.LastName określone na podstawie klucza Serials.ModifiedBy
Jak można zauważyć, w tabeli Serials występują dwie kolumny CreatedBy i ModifiedBy z kluczami obcymi powiązanymi z ID z jednej tabeli, czyli Users. Wartości tych kluczy mogą być różne w jednym rekordzie i dlatego nie wiem, jak skonstruować zapytanie, aby uzyskać oczekiwaną tabelę.
Proszę o pomoc :)