Problem z podzapytaniem postgres

Problem z podzapytaniem postgres
DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 311
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?

Kopiuj
SELECT * from PRACOWNICY
WHERE firma in
(SELECT f_id FROM firmy
WHERE f_id = md1)
YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
0

Pokaż definicję tabel, typy danych, dane.

Kopiuj
select p.* from pracownicy p join firmy f on p.firma=f.f_id and f.nazwa = 'McDonald';
UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
2

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

Kopiuj
SELECT * from PRACOWNICY
WHERE firma in
(SELECT f_id FROM firmy
WHERE f_id = 'md1')
TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 681
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:

Kopiuj
SELECT * FROM pracownicy WHERE firma = 'md1'

???

To miałoby sens np. tak:

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

a jeszcze lepiej to zapisać:

Kopiuj

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

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.