Mam następującą strukturę bazy
daneOsobiste(id SERIAL, imie text, nazwisko text, telefon text, pesel text)
dataUrodzenia(id int4, data date)
adresZamieszkania(id int4, ulica text, numerDomu text, numerMieszkania text, kodPocztowy text, miasto text, wojewodztwo text, kraj text)
adresZameldowania(id int4, ulica text, numerDomu text, numerMieszkania text, kodPocztowy text, miasto text, wojewodztwo text, kraj text)
adresKorespondencji(id int4, ulica text, numerDomu text, numerMieszkania text, kodPocztowy text, miasto text, wojewodztwo text, kraj text)
umowa(id int4, dataOd date, dataDo date, stanowisko text, wynagrodzenie money, idFirmyOd int2, idFirmyU int2, adnotacja text)
orzeczenie(id int4, dataOd date, dataDo date, stopien int2, symbol text)
badanie(id int4, dataOd date, dataDo date)
urlop(id int4, dataOd date, dataDo date, firmaU int2, czasUrlopu int2)
daneDoWyplaty(id int4, nip text, numerKonta text, nazwaBanku text)
informacjeDodatkowe(id int4, adnotacja text)
firma(id SERIAL, nazwaFirmy text)
firmaU(id SERIAL, nazwaFirmy text)
Mam teraz pytanie (proszę jedynie o wskazówki i odwołanie do literatury za pomocą linku).
Chcę utworzyć zapytanie, w którym wybiorę: id, nazwaFirmy Od, nazwaFirmy U, imię, nazwisko, zatrudniony od, zatrudniony do, stopień niepeł., symbol niepeł, do kiedy orzeczenie, do kiedy badanie
Napisałem takie zapytanie. Nie wiem co źle napisałem, choć zdaję sobie sprawę, że mam małą wiedzę i brak umiejętności, jeżeli chodzi o tworzenie zapytań.
SELECT daneosobiste.id, od.nazwaFirmy, u.nazwaFirmy, daneosobiste.imie, daneosobiste.nazwisko, zatrudnionyod.dataOd, zatrudnionydo.dataDo, orzeczenie.stopien, orzeczenie.symbol, orz.dataDo, bad.dataDo
FROM daneosobiste
LEFT JOIN umowa AS od ON od.id = firma.id
LEFT JOIN umowa AS u ON u.id = firma.id,
umowa As zatrudnionyod, umowa AS zatrudnionydo, orzeczenie, orzeczenie AS orz, badanie AS bad
WHERE zatrudnionyod.id = daneosobiste.id AND zatrudnionydo.id = daneosobiste.id AND orzeczenie.id = daneosobiste.id AND orz.id = daneosobiste.id AND bad.id = daneosobiste.id
Pytanie dotyczy PostgreSQL
Proszę o wskazówki, dzięki
PS.
Ok, napisałem zapytanie, ale zwraca mi dwa wyniki, dla każdego nazwiska, dlaczego?
SELECT daneosobiste.id, od.nazwaFirmy, u.nazwaFirmy, daneosobiste.imie, daneosobiste.nazwisko, zatrudnionyod.dataOd, zatrudnionydo.dataDo, orzeczenie.stopien, orzeczenie.symbol, orz.dataDo, bad.dataDo FROM daneosobiste, umowa LEFT JOIN firma AS od ON od.id = umowa.idFirmyOd LEFT JOIN firmaU AS u ON u.id = umowa.idFirmyU, umowa As zatrudnionyod, umowa AS zatrudnionydo, orzeczenie, orzeczenie AS orz, badanie AS bad WHERE zatrudnionyod.id = daneosobiste.id AND zatrudnionydo.id = daneosobiste.id AND orzeczenie.id = daneosobiste.id AND orz.id = daneosobiste.id AND bad.id = daneosobiste.id