Moje tabele
TABELA order
idorder
name
idemployee
idproject
TABELA project
idproject
name
idclient
TABELA user
iduser
name
lastname
idrole
TABELA role
idrole
name
dla idrole 2 - employee
dla idrole 3 - client
AS `idclient`, `client`.`name` AS `client_name`, `client`.`lastname` AS `client_lastname`, `project`.`idproject`, `project`.`name` AS `project_name` FROM `order`
LEFT JOIN `user` AS `employee` ON `order`.`idemployee` = `employee`.`iduser`
LEFT JOIN `project` ON `order`.`idproject` = `project`.`idproject`
LEFT JOIN `user` AS `client` ON `client`.`iduser` = (SELECT `user`.`iduser` FROM `user`, `project`, `order` WHERE `user`.`iduser` = `project`.`idclient` AND `user`.`idrole` = 3 AND `project`.`idproject` = `order`.`idproject`);
Chcę w jednym zapytaniu wyświetlić imie i nazwisko klienta (client) i pracownika (employee) dla danego zamówienia (order), jednak w tabeli zamówień (order) mam tylko klucz obcy pracownika (employee), natomiast klucz obcy dla klienta (client) jest w tabeli projektów (project). Tabela projektów (project), jest powiązana z tabelą zamówień (order) za pomocą klucza obcego (idproject). Tabeli zarówno klientów (client) i pracowników (employee) to ta sama tabela użytkowników (user), o tym czy jest to klient (client), czy pracownik (employee) decyduje klucz obcy do tabeli ról (role). Wie ktoś jak zrobić cos takiego, kombinowałem na różne sposoby, ale mi nie wychodzi. Jedno z zapytań jakim próbowałem zamieściłem powyżej.