Próbuję zrobić harmonogram zadań. Jestem początkujący także proszę o wyrozumiałość.
Mam dwie tabele. Pierwsza tabela zawiera zadania jakie trzeba wykonań na określonej zmianie ( są trzy zmiany ) i druga tabela która zawiera wykonane zadania. Mój problem polega na tym że nie wiem jak zrobić aby pokazywało z bazy jakie zadania sa jeszcze do wykonania, a jeżeli zadanie jest już wykonane to żeby juz nie było pokazane. Nie wiem czy dobrze to przedstawiłem, ale proszę o jakieś wskazówki. Z góry dziękuje i pozdrawiam
Czy tabele są JAKKOLWIEK powiązane ? Jeśli nie, to
select * from wykonane;
oraz
select * from niewykonane;
;p
Pierwsza tabela:
Zadania: id_zadania | zadanie | opis_zadania | jakazmiana
druga tabela:
Wykonane zadania: id_wyk_zadania | id_zadania | kto | kiedy
Oczywiście proszę o wyrozumiałość i jakies sugestie.
A jaki jest sens rozbijania tego na różne tabele? Nie można zrobić czegoś w stylu:
id | zmiana | zadanie | wykonano |
---|---|---|---|
1 | 1 | nalać piwa | 1 |
2 | 2 | wypić piwo | 0 |
wykonane zadania
select * from tabela where wykonano=1
niewykonane zadania
select * from tabela where wykonano=0
"poinformowanie", że zadanie zostało wykonane
update tabela set wykonano=1 where id=2
Tylko że te zadania się powtarzają. Powiedzmy zmiana 1 - do zrobienia jest zadanie A, zmiana 2 - zadanie B, zmiana 3 - zadanie C. I w kolejny dzień te same zadania
A czy możesz mi nakreślić ta drugą tabele bo nie wiem jak ona miałaby wyglądać :/
Tak na szybko np. coś takiego:
tabela zadania
id_zadania | nazwa_zadania | opis_zadania |
---|---|---|
1 | nalać piwo | otworzyć butelkę, przechylić... |
2 | wypić piwo | no to to każdy wie |
tabela harmonogram
id | dzien_miesiaca | zmiana | id_zadania | wykonano |
---|---|---|---|---|
1 | 1 | 1 | 1 | 0 |
2 | 1 | 2 | 2 | 1 |
itp. itd.
To mam w tej drugiej tabeli rozpisac cały rok ? I powiedzmy że w każdym dniu jest jekieś 20 zadań ?
Powiem może dokładniej.
Każdego dnia na 1 zmianie jest do zrobienia: zadanie A, zadanie B, zadanie C ...itd
zmiana 2 : zadanie D, zadanie E, zadanie F...itd
zmiana 3 : zadanie G, zadanie H, zadanie I...itd
I teraz chciałem to tak zrobić żeby pokazało mi liste co jest do zrobienia na zmianie X , a jeśli zostało juz to zrobione to zeby było to odnotowane i juz nie pokazywane.
Ok a jak jeszcze chciałbym dodać że np dziś na 1 zmianie zadanie A zrobił Adam Nowak a wczoraj to samo zadanie zrobił Michał Kowalski. Chciałbym mieć po prostu jeszcze taką historię kto co zrobił ?
och, po kawałeczku, po kropelce... to i jeszcze to ma być? :P
To zrób trzecią tabelę pracownicy
id | nazwisko |
---|---|
1 | Nowak Adam |
wtedy np. w tabeli harmonogram mozesz zrobić tak, że 0 oznacza niewykonane zadanie, a każda większe od zera wartość oznacza wykonane - Ty będziesz sobie w to wykonane wstawiał id pracownika, który to wykonał (tylko cały czas myśl w dłuższym okresie czasu - dziś wykonał to zadanie kowalski, za tydzień to zadanie może wykonać nowak itp. itd.)
Czyli reasumując mogę to połączyć z tabelą users którą już mam ?
Ok, wielkie dzięki
funkcja minus zwraca różnicę zbiorów:
CREATE TABLE zad_do_wyk(
id NUMBER(4) PRIMARY KEY,
zmiana1 VARCHAR2(30),
zmiana2 VARCHAR2(30),
zmiana3 VARCHAR2(30)
);
CREATE TABLE zad_wyk(
id NUMBER(4) PRIMARY KEY,
zmiana1 VARCHAR2(30),
zmiana2 VARCHAR2(30),
zmiana3 VARCHAR2(30)
);
INSERT INTO zad_do_wyk VALUES (1, 'a', 'b','c');
INSERT INTO zad_do_wyk VALUES (2, 'a', 'b', 'c');
INSERT INTO zad_wyk VALUES (1, null, 'b','c');
INSERT INTO zad_wyk VALUES (2, 'a', null,null);
select zmiana2 from zad_do_wyk
minus
select zmiana2 from zad_wyk
where id =2;
Wynik:
ZMIANA2
b