konto usunięte

Temat: Lista pracowników pracujących nad projektem

W bazie danych są tabele pracownicy i projekty, w relacji wiele do wielu. Powiązania pracowników i projektów znajdują się w oddzielnej tabeli. Chciałbym móc wypisać po kolei nazwy projektów i listy przypisanych pracowników, w porządku:

- projekt 1
---- pracownik 1
---- pracownik 4
---- pracownik 43
- projekt 2
---- pracownik 3
---- pracownik 43
- projekt 3
---- pracownik 1
---- pracownik 2

Obecnie wygląda to tak:

projekt 1 | pracownik 1
projekt 1 | pracownik 4
projekt 1 | pracownik 43
projekt 2 | pracownik 3
projekt 2 | pracownik 43

Chętnie poznam szkice rozwiązań realizujących widok zbliżony do pierwszego.
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: Lista pracowników pracujących nad projektem

Takie rzeczy, to ... na kliencie

Temat: Lista pracowników pracujących nad projektem

Nie bardzo wiem z czym masz problem ?
Z zapytaniem SQL czy z wyświetleniem danych na stronie?

Temat: Lista pracowników pracujących nad projektem

1. Baz danych nie używa się do wyrafinowanej prezentacji danych. Od tego jest warstwa widoku.
2. Nie wiemy, o jaki silnik bazy danych chodzi.
3. Czy to będą tylko 2 poziomy (można zakodować na sztywno), czy więcej (powinno być dynamicznie)?

Definicja tabel - składnia MS SQL Server

CREATE TABLE Pracownicy (ID INT IDENTITY(1,1), Personalia NVARCHAR(50), PRIMARY KEY(ID));
INSERT INTO Pracownicy VALUES('Piotr Abacki');
INSERT INTO Pracownicy VALUES('Anna Bebacka');
INSERT INTO Pracownicy VALUES('Zuzanna Cedacka');
INSERT INTO Pracownicy VALUES('Adam Dedacki');

CREATE TABLE Projekty (ID INT IDENTITY(1,1), Nazwa NVARCHAR(50), PRIMARY KEY(ID));
INSERT INTO Projekty VALUES('Projekt 1');
INSERT INTO Projekty VALUES('Projekt 2');
INSERT INTO Projekty VALUES('Projekt 3');

CREATE TABLE PracProj(ID INT IDENTITY(1,1), PracID INT, ProjID INT, PRIMARY KEY(ID));
INSERT INTO PracProj(ProjID, PracID) VALUES(1, 1);
INSERT INTO PracProj(ProjID, PracID) VALUES(1, 3);
INSERT INTO PracProj(ProjID, PracID) VALUES(2, 2);
INSERT INTO PracProj(ProjID, PracID) VALUES(2, 3);
INSERT INTO PracProj(ProjID, PracID) VALUES(2, 4);
INSERT INTO PracProj(ProjID, PracID) VALUES(3, 2);
INSERT INTO PracProj(ProjID, PracID) VALUES(3, 4);


Zapytanie, czysty SQL92

SELECT Nazwa AS Przypisania
FROM
(
SELECT proj.ID AS ProjID, -1 AS Ord, '- ' + proj.Nazwa AS Nazwa
FROM Projekty proj
UNION ALL
SELECT proj.ID AS ProjID, IsNull(prac.ID, 0) AS Ord, '---- ' + prac.Personalia AS Nazwa
FROM Projekty proj
LEFT JOIN PracProj pp ON proj.ID = pp.ProjID
LEFT JOIN Pracownicy prac ON prac.ID = pp.PracID
) x
ORDER BY ProjID, Ord


Wynik:
- Projekt 1
---- Piotr Abacki
---- Zuzanna Cedacka
- Projekt 2
---- Anna Bebacka
---- Zuzanna Cedacka
---- Adam Dedacki
- Projekt 3
---- Anna Bebacka
---- Adam Dedacki


PS:
Jakub K.:
W bazie danych są tabele pracownicy i projekty, w relacji wiele do wielu.

Czy wiesz, co jest relacją w relacyjnym modelu danych? Bo na pewno nie to, co napisałeś. Hint: "relationship" vs. "relation". Warto poznać odpowiedź na to pytanie, jeśli zamierza się profesjonalnie związać z informatyką :)Ten post został edytowany przez Autora dnia 13.10.14 o godzinie 15:08
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: Lista pracowników pracujących nad projektem

Jeżu, przerażającą rzecz dopiero teraz dojrzałem... Info pod nazwiskiem osoby zadającej pytanie...

konto usunięte

Temat: Lista pracowników pracujących nad projektem

Marcin M.:
Jeżu, przerażającą rzecz dopiero teraz dojrzałem... Info pod nazwiskiem osoby zadającej pytanie...

czepiasz się
a ile Ty umiałeś w jego wieku? ~20 lat?
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: Lista pracowników pracujących nad projektem

Przemysław R.:

czepiasz się
a ile Ty umiałeś w jego wieku? ~20 lat?
Nie czepiam się doświadczenia, a stanowiska... W sumie to się to łączy. Nie powierzyłbym projektu IT osobie bez ~20 lat doświadczenia. Sam takowe posiadam, ale chyba również bym się nie podjął prowadzenia calego projektu. Choć z innych względów. :)
Adam O.

Adam O. Bazy danych etc

Temat: Lista pracowników pracujących nad projektem

Nie powierzyłbym projektu IT osobie bez ~20 lat doświadczenia. Sam takowe posiadam [...]

Jak posiadasz to powinieneś już wiedzieć że świat taki jaki powinien być i taki jaki jest to dwie różne rzeczy. Tym bardziej różne im większy projekt i większa firma;)

konto usunięte

Temat: Lista pracowników pracujących nad projektem

Zadanie nie jest mojego autorstwa, stąd też narzucona metoda rozwiązania.

Jeśli chodzi o różnicę pomiędzy relation, a relationship - w wynikach wyszukiwania zarówno polskich jak i zagranicznych pojęcia te nieraz są używane zamiennie. Jednakże uznawanie wyraźnej różnicy wydaje mi się być uzasadnione.

Aspekty związane ze specyfiką stanowiska, na którym pracuję, chętnie przedyskutowałbym z osobami mającymi doświadczenie jako ww., w oddzielnym temacie. Pan Marcin Miga stwierdza, że nie powierzyłby prowadzenia projektu osobie bez 20 lat doświadczenia. Takie innowacyjne stwierdzenie (przekraczające wymagania we wszystkich ogłoszeniach, które widziałem) musi brać się z rozległej wiedzy i wieloletniego doświadczenia w zakresie program management, zatem chętnie poznam więcej ciekawych konkluzji.

Dziękuję Panu Adrianowi Olszewskiemu za zamieszczenie ciekawego rozwiązania.

Temat: Lista pracowników pracujących nad projektem

Jakub K.:
Jeśli chodzi o różnicę pomiędzy relation, a relationship - w wynikach wyszukiwania zarówno polskich jak i zagranicznych pojęcia te nieraz są używane zamiennie. Jednakże uznawanie wyraźnej różnicy wydaje mi się być uzasadnione.

W relacyjnym modelu danych termin "relacja" (relation) odnosi się do tabel, będących ich reprezentacją. To, co modeluje semantyczne powiązania między tabelami, to związki (relationship).

Pomimo podobnie brzmiących nazw, pomimo tego, że nawet Microsoft na swoich stronach miesza te pojęcia (MS Access), że czynią to nawet autorzy drogich książek, są to zupełnie różne rzeczy. Ponieważ pojęcia te są nagminnie mieszane przez osoby związane zawodowo z informatyką, posiadające w tej dziedzinie tytuł (zawodowy i/lub naukowy), a także, niestety, zajmujące się profesjonalnie bazami danych, warto unikać tego błędu i świadomie używać obu pojęć.

BTW: jeśli ktoś zamierza związać się na poważnie z szeroko pojętą informatyką, świadomie ją studiuje, uważa się i pragnie uchodzić za profesjonalistę, nie chce być jedynie "klikaczem/składaczem klocków" (choć i tacy są potrzebni), warto, by zapoznał się z tematyką poruszaną w książkach autorów takich, jak m.in. Codd, Wirth, Booch & Rumbaugh, Stroustrup. To jest historia (nadal aktualna!) informatyki. Czas poświęcony na choćby pobieżne zapoznanie się z tymi treściami nie będzie stracony.

Jeśli rozwiązanie się przydało, to fajnie :)
Pozdrawiam.Ten post został edytowany przez Autora dnia 13.10.14 o godzinie 19:28
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: Lista pracowników pracujących nad projektem

Chciałem coś napisać w kierunku kolegi... ale się rozmyśliłem.

Skomentuję tylko firmę zatrudniającą, że nierozsądnym posunięciem jest powierzenie projektu osobie która "nie zjadła zębów" na pracy w projektach jako kierownik.
Sam sponsorując stworzenie rozwiązania IT (najniższym kosztem) wolałbym aby zajęła się tym osoba, która przynajmniej brała udział w pracach projektowych. Obiektywnie patrząc jako przedsiębiorca chciałbym zminimalizować ryzyko niepowodzenia projektu wynikające ze sposobu jego prowadzenia i organizacji pracy.

Mogę się jednak mylić. Kolega ma 1 rok dziury w doświadczeniu więc zakładam... odpowiedni urząd pracy :)

Chociaż w sumie co mi szkodzi zająć się zarządzaniem sprzedaży wkrętaków... co z tego, że się na tym kompletnie nie znam.

Następna dyskusja:

Lista Mailingowa




Wyślij zaproszenie do