Zapytanie z kilku tabel, powiązane tabele MySQL

Zapytanie z kilku tabel, powiązane tabele MySQL
L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: nie wasz interes
  • Postów: 51
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

Kopiuj
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.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3890
1

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

Kopiuj
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`
L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: nie wasz interes
  • Postów: 51
0
Panczo napisał(a):

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

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.