Problem z podzapytaniem postgres

0

Z tabeli Pracownicy wyświetl wszystkich pracowników pracujących w firmie o nazwie "McDonald".

Mam tabele pracownicy z kolumną firma gdzie jest id firmy McDonald md1 .
Mam tabele firmy, gdzie są rózne id firm, w tym md1 i kolumna Nazwa

Moje zapytanie nie działa, powie ktoś co źle robie?

SELECT * from PRACOWNICY
WHERE firma in
(SELECT f_id FROM firmy
WHERE f_id = md1)
0

Pokaż definicję tabel, typy danych, dane.

select p.* from pracownicy p join firmy f on p.firma=f.f_id and f.nazwa = 'McDonald';
2

Jesteś pewny że id ma byc md1? Jak tak to raczej coś takiego:

SELECT * from PRACOWNICY
WHERE firma in
(SELECT f_id FROM firmy
WHERE f_id = 'md1')
0

To w ogóle jest chyba bez sensu.

Szukasz w tabeli pracownicy, gdzie firma = f_id wyciągnięte z "firmy", gdzie f_id = 'md1'.

Nie prościej:

SELECT * FROM pracownicy WHERE firma = 'md1'

???

To miałoby sens np. tak:

SELECT * FROM pracownicy
WHERE firma in
(SELECT f_id FROM firmy
WHERE f_id = pracownicy.firma)

a jeszcze lepiej to zapisać:


SELECT * FROM pracownicy
WHERE EXISTS
(SELECT f_id FROM firmy
WHERE f_id = pracownicy.firma)

jeżeli potrzeba Ci nazwy firmy, to po prostu left/inner join do firmy i wyciągasz jej nazwę.

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