• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Postgresql zapytania z dwoma odwołaniami do jednej tabeli

Object Storage Arubacloud
+1 głos
158 wizyt
pytanie zadane 16 sierpnia 2020 w SQL, bazy danych przez PGR Obywatel (1,360 p.)

Witam 

Mam w postgresie 2 tabele.

Pierwsza Projekty składa się z kolumn id_projektu, nazwa_projektu, zleceniodawcy i wykonawcy. 

Druga Pracownicy która się składa z kolumn id_pracownika, imie, nazwisko.

W kolumnach zleceniodawcy i wykonawcy są podane id_pracowników. Chciałbym napisać zapytanie które mi zwraca nazwę projektu, imię i nazwisko osoby zlecającej i wykonującej.

Napisałem takie zapytanie:

Select nazwa_projektu, imie || ' ' || nazwisko, imie || ' ' || nazwisko From projekty, pracownicy Where zleceniodawca=id_pracownika AND wykonawca=id_pracownika.

Oczywiście wynik takiego zapytania zwrócił mi 0 wierszy. Rozumie że program nie wie że za pierwszym razem chodzi mi o imię i nazwisko osoby zlecającej a za drugim o osobę wykonującą ale nie wiem jak to przekazać w zapytaniu.   

      

2 odpowiedzi

+1 głos
odpowiedź 16 sierpnia 2020 przez areklipno Stary wyjadacz (11,930 p.)

wg mnie mogłoby to wyglądać następująco

select nazwa_projektu
, p1.imie || ' ' || p1.nazwisko zleceniodawca
, p2.imie || ' ' || p2.nazwisko wykonawca

from projekty pr

join pracownicy p1 on (p1.id_pracownika = pr.zleceniodawca)

join pracownicy p2 on (p2.id_pracownika = pr.wykonawca)

jeśli wykonawca lub/i zleceniodawca nie są zawsze dopisani proponowałbym

select nazwa_projektu
, p1.imie || ' ' || p1.nazwisko zleceniodawca
, p2.imie || ' ' || p2.nazwisko wykonawca

from projekty pr

left join pracownicy p1 on (p1.id_pracownika = pr.zleceniodawca)

left join pracownicy p2 on (p2.id_pracownika = pr.wykonawca)

 

 

0 głosów
odpowiedź 16 sierpnia 2020 przez VBService Ekspert (253,340 p.)
edycja 16 sierpnia 2020 przez VBService

Użyj "alias-ów" do nazw tabel (TABLE ALIAS): PostgreSQL - ALIAS Syntax

Select p.nazwa_projektu, p.imie || ' ' || p.nazwisko, pr.imie || ' ' || pr.nazwisko
  From projekty AS p, pracownicy AS pr 
    Where p.zleceniodawca = p.id_pracownika AND pr.wykonawca = pr.id_pracownika

Alias na nazwie kolumny (COLUMN ALIAS) : PostgreSQL - How to use ... column aliases

Select p.nazwa_projektu AS 'Projekt', p.imie || ' ' || p.nazwisko, pr.imie || ' ' || pr.nazwisko
  From projekty AS p, pracownicy AS pr 
    Where p.zleceniodawca = p.id_pracownika AND pr.wykonawca = pr.id_pracownika
Select p.nazwa_projektu AS 'Nazwa projektu', p.imie || ' ' || p.nazwisko AS 'Osoba zlecająca', pr.imie || ' ' || pr.nazwisko AS 'Osoba wykonująca'
  From projekty AS p, pracownicy AS pr 
    Where p.zleceniodawca = p.id_pracownika AND pr.wykonawca = pr.id_pracownika

 

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
0 głosów
2 odpowiedzi 590 wizyt
0 głosów
1 odpowiedź 542 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...