ZAdanko z sqla

0

Witam mam problem, jestem początkującym jeśli chodzi o SQLA i nie mam pojęcia jak wykonać poniższe zadanie(w załączniku baza):

Wyświetl pracowników już nie pracujących(job history) wyświetl ich
nazwisko oraz date zwolnienia

Tak to próbowałem robić
SELECT last_name, employee_id, d.end_date from EMPLOYEES
d join job_history j
on d.end_date=j.end_date
Where employee_id=(SELECT employee_id from Employees where end_date is NOT NULL)

0
  1. w tabeli EMPLOYEES nie masz pola end_date, sprzężenie powinno być po polu employee_id
  2. Jeżeli uzywasz znaku = do podzapytnia to podzapytanie nie może zwrócić więcej niż jeden rekord, pewnie chciałeś in
  3. Podzapytanie jest nieprawidłowe ponieważ pytasz o pole którego w nim nie ma.
  4. Samo podzapytanie nie ma sensu, poniewa pole end_date jest w tabeli job history, więc możesz stawiać warunki bezpośrednio na nim
0

A czy mógłbyś mi choć trochę pomóc z tym kodem? Szczerze mówiąc jestem już padnięty po kilku godzinach robienia zadań z SQL-a i nie mam sił.

0

SELECT last_name, employee_id, d.end_date from EMPLOYEES
d join job_history j
on d.end_date=j.end_date
Where employee_id=(SELECT employee_id from Employees where end_date is NOT NULL)

Pierwsze pogrubienie zastosuj pkt1, drugie pkt 4 z mojego porzedniego posta

0

więc :
SELECT last_name, d.employee_id, end_date from EMPLOYEES
d right join JOB_HISTORY j
on d.employee_id=j.employee_id
Where employee_id IN (SELECT end_date from job_history where end_date is NULL) ?
Nie no, klapa, naprawdę już nic nie wiem

1

napisalem że podzapytanie nie ma sensu w where, zapytaj bezposrednio o end_date,
i nie right join tylko inner join...

SELECT last_name, 
       d.employee_id, 
       end_date 
FROM   employees d 
       INNER JOIN job_history j 
               ON d.employee_id = j.employee_id 
WHERE  NOT end_date IS NULL 
0

Ok, rozumiem teraz, dziękuję serdecznie za pomoc :)

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