Zapytanie z kilku tabel, powiązane tabele MySQL

0

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.

1

nie rozumiem tago podzapytania w sprzężeniu. Może tak:

select
*
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` =  `project`.`idclient`
0
Panczo napisał(a):

nie rozumiem tago podzapytania w sprzężeniu. Może tak:

select
*
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` =  `project`.`idclient`

Faktycznie, teraz działa, dziękuję bardzo. Co do tego podzapytania, to trochę kombinowałem i za którymś razem wyszedł mi dziwny taki twór :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1