Michał Kozłowski

Michał Kozłowski Programista
ColdFusion, Web
Design Omagh

Temat: ZADANIE i PRACOWNIK

Oracle XE

Mam tabele
ZADANIE(idZadanie, komentarz, ...)
PRACOWNIK(idPracownik, imie, nazwisko, ....)

Każde zadanie tworzone jest przez pracownika (twórca zadania) i zlecane jest innemu pracownikowi (właściciel zadania). Pracownik może także tworzyć zadania dla siebie.

I teraz jednym zapytaniem chce wyciągnąć imię i nazwisko twórcy oraz imię i nazwisko właściciela zadania.

konto usunięte

Temat: ZADANIE i PRACOWNIK

Michał Kozłowski:
Oracle XE

Mam tabele
ZADANIE(idZadanie, komentarz, ...)
PRACOWNIK(idPracownik, imie, nazwisko, ....)

Każde zadanie tworzone jest przez pracownika (twórca zadania) i zlecane jest innemu pracownikowi (właściciel zadania). Pracownik może także tworzyć zadania dla siebie.

I teraz jednym zapytaniem chce wyciągnąć imię i nazwisko twórcy oraz imię i nazwisko właściciela zadania.

select T.imie||' '||T.nazwisko as Tworca,
W.imie||' '||W.nazwisko as Wlsciciel,
Z.komentarz
from PRACOWNIK T,
PRACOWNIK W,
ZADANIE Z
where Z.idWlasciciela = W.idPracownik
and Z.idTworcy = T.idPracownik

Radzę się trochę podszkolić, bo to są zupełne podstawy SQLa.
Piotr Glapa

Piotr Glapa Ekspert
projektowania
systemów
informatycznych, PKO
BP S.A.

Temat: ZADANIE i PRACOWNIK

Jak dla mnie to model (czyli te dwie tabele) są nie halo :)
jeżeli zadanie może być wykonywane tylko przez jednego pracownika
to przechowywałbym w tabeli zadanie klucz obcy z id pracownika (tabeli pracownik) a dokładniej dwa razy, raz jako twórcę zadania a raz jako właściciela zadania - kolega Wojciech napisał zapytanie właśnie pod taki model.
PozdroPiotr Glapa edytował(a) ten post dnia 20.09.08 o godzinie 22:42

konto usunięte

Temat: ZADANIE i PRACOWNIK

A tak można w standardzie SQL'a:
//CREATE TABLE People (idMan number, fName text, lName text)
//CREATE TABLE Jobs (idJob number, idCreator number, idWorker number, //Comment text)

Poniżej działający kod:

SELECT Creator.lName+' '+Creator.fName AS Zleceniodawca,
Worker.lName+' '+ Worker.fName AS Wykonawca,
Jobs.Comment AS Opis_zadania

FROM People AS Creator,
People AS Worker,
Jobs AS Jobs

WHERE (Creator.IdMan = Jobs.IdCreator)
AND (Worker.IdMan = Jobs.IdWorker)

ORDER BY Creator.lName,
Creator.fName,
Worker.lName,
Worker.fName,
Jobs.Comment

Ściągnąłem z wypowiedzi powyżej pomysł na aliasy tabel (bez tego wychodzi strasznie), ale też dopiero zgłębiam SQL'a.
chochlik: Jobs AS Jobs ;)
Michał Kozłowski

Michał Kozłowski Programista
ColdFusion, Web
Design Omagh

Temat: ZADANIE i PRACOWNIK

Wojtek profesjonalista rozwiązał napotkany przez mnie problem. Oczywistym jest z tabele ZADANIE trzeba było uzupełnić o dwa klucze obce z tabeli PRACOWNIK.
Dzięki za odpowiedź.

P.S.
Podszkolę się kiedy znajdę chwilkę czasu ;)

Następna dyskusja:

Zadanie SQL, pomocy!!!!!!!!...




Wyślij zaproszenie do