Thread View: pl.comp.bazy-danych
6 messages
6 total messages
Started by KA-RAM-BA
Tue, 08 Nov 2016 06:50
[DB2] - złączenie trzech dziwnych tabel
Author: KA-RAM-BA
Date: Tue, 08 Nov 2016 06:50
Date: Tue, 08 Nov 2016 06:50
20 lines
2240 bytes
2240 bytes
Cześć. Mam następujący problem i potrzebuję Waszej pomocy. Mam 3 tabele: OSOBY, DOKUMENTY, PISMA. W tabeli OSOBY mam osoby. Kolumny to: Nazwisko, Imię, PESEL (w tabeli nie ma takich samych osób o tym samym numerze PESEL) W tabeli DOKUMENTY są wpisy dla kogo i kiedy zarejestrowano dokument. Kolumny tabeli to: PESEL, data_rej (wpisów dla danej osoby może być dużo) W tabeli PISMA są wpisy dla kogo i kiedy zarejestrowano pismo. Kolumny to: PESEL, data_rej (wpisów dla danej osoby może być dużo) Chodzi mi to to by wylistować w trzech kolumnach (osoba + data ostatniego najnowszego zarejestrowania dokumentu + data ostatniego zarejestrowania pisma (pod warunkiem, że jest większa niż data ostatniej zarejestrowania dokumentu). Jeśli data ostatniego zarejestrowania pisma jest mniejsza od daty ostatniego zarejestrowania dokumentu to pole zostawić pustą. Czyli coś takiego: Kowalski 2016-10-23 2016-11-05 Nowak 2016-09-01 Baza to DB2 ale ewentualna pomoc może być również na przykładzie innych baz. KA-RAM-BA
Re: [DB2] - złączenie trzech dziwnych tabel
Author: geos
Date: Tue, 08 Nov 2016 07:09
Date: Tue, 08 Nov 2016 07:09
31 lines
2282 bytes
2282 bytes
On 08.11.2016 07:50, KA-RAM-BA wrote: > Cześć. > Mam następujący problem i potrzebuję Waszej pomocy. > Mam 3 tabele: OSOBY, DOKUMENTY, PISMA. > > W tabeli OSOBY mam osoby. Kolumny to: Nazwisko, Imię, PESEL (w tabeli nie ma takich samych osób o tym samym numerze PESEL) > W tabeli DOKUMENTY są wpisy dla kogo i kiedy zarejestrowano dokument. Kolumny tabeli to: PESEL, data_rej (wpisów dla danej osoby może być dużo) > W tabeli PISMA są wpisy dla kogo i kiedy zarejestrowano pismo. Kolumny to: PESEL, data_rej (wpisów dla danej osoby może być dużo) > > Chodzi mi to to by wylistować w trzech kolumnach (osoba + data ostatniego najnowszego zarejestrowania dokumentu + data ostatniego zarejestrowania pisma (pod warunkiem, że jest większa niż data ostatniej zarejestrowania dokumentu). Jeśli data ostatniego zarejestrowania pisma jest mniejsza od daty ostatniego zarejestrowania dokumentu to pole zostawić pustą. > > > Czyli coś takiego: > Kowalski 2016-10-23 2016-11-05 > Nowak 2016-09-01 powinno dać to czego pragniesz: select o.im, o.nz , max(d.dt) d_dt , case when max(p.dt) > max(d.dt) then max(p.dt) end p_dt from osoby o left join dokumenty d on o.pesel = d.pesel left join pisma p on o.pesel = p.pesel and p.dt > d.dt group by o.psl, o.im, o.nz; pozdrawiam, geos
Re: [DB2] - złączenie trzech dziwnych tabel
Author: Czarek Grądys
Date: Tue, 08 Nov 2016 10:22
Date: Tue, 08 Nov 2016 10:22
32 lines
2584 bytes
2584 bytes
W dniu 08.11.2016 o 07:50, KA-RAM-BA pisze: > Cześć. > Mam następujący problem i potrzebuję Waszej pomocy. > Mam 3 tabele: OSOBY, DOKUMENTY, PISMA. > > W tabeli OSOBY mam osoby. Kolumny to: Nazwisko, Imię, PESEL (w tabeli nie ma takich samych osób o tym samym numerze PESEL) > W tabeli DOKUMENTY są wpisy dla kogo i kiedy zarejestrowano dokument. Kolumny tabeli to: PESEL, data_rej (wpisów dla danej osoby może być dużo) > W tabeli PISMA są wpisy dla kogo i kiedy zarejestrowano pismo. Kolumny to: PESEL, data_rej (wpisów dla danej osoby może być dużo) > > Chodzi mi to to by wylistować w trzech kolumnach (osoba + data ostatniego najnowszego zarejestrowania dokumentu + data ostatniego zarejestrowania pisma (pod warunkiem, że jest większa niż data ostatniej zarejestrowania dokumentu). Jeśli data ostatniego zarejestrowania pisma jest mniejsza od daty ostatniego zarejestrowania dokumentu to pole zostawić pustą. > > > Czyli coś takiego: > Kowalski 2016-10-23 2016-11-05 > Nowak 2016-09-01 > > > Baza to DB2 ale ewentualna pomoc może być również na przykładzie innych baz. > > > KA-RAM-BA > A jak się trafi osoba nie mająca nr PESEL? Jakiś zagraniczny gostek np? Pomyśl nad kluczem, PESEL nie nadaje się na klucz, bo nie zależy od Ciebie, tylko od ustawodawcy. Nie wolno zakładać odpowiedzialności ustawodawcy! Ustawodawca może powiedzieć, że od jutra PESEL nie obowiązuje! -- Cezary Grądys czarekgr@wa.onet.pl
Re: [DB2] - złączenie trzech dziwnych tabel
Author: Krzysztof Jodłowski
Date: Tue, 08 Nov 2016 11:36
Date: Tue, 08 Nov 2016 11:36
16 lines
1630 bytes
1630 bytes
PESEL może być błędny i w efekcie się powtarzać. Zdarzało się, że prasa donosiła o takich przypadkach. Poza tym PESEL można zmienić w trakcie życia: - jeśli doszło do zmiany płci, - jeśli zmieniasz datę urodzenia, - w przypadku podania błędnych informacji przy nadaniu numeru PESEL (jeśli urzędnik mógł zostać wprowadzony w błąd, co do twojej tożsamości), - jeśli urzędnik pomylił się podczas wprowadzania danych do systemu (podał błędną datę urodzenia lub płeć), Wszystko to nieczęste przypadki, ale się zdarzają... -- pozdrawiam Krzysztof Jodłowski
Re: [DB2] - złączenie trzech dziwnych tabel
Author: NotBear
Date: Sat, 19 Nov 2016 19:03
Date: Sat, 19 Nov 2016 19:03
9 lines
1249 bytes
1249 bytes
W dniu 2016-11-08 o 12:36, Krzysztof Jodłowski pisze: > Wszystko to nieczęste przypadki, ale się zdarzają... "_Co roku_ dokonuje się _kilku tysiecy_ takich zmian." Zrodlo: http://www.rp.pl/artykul/965668-Kto-i-dlaczego-zmienia-PESEL.html -- NotBear
Re: [DB2] - złączenie trzech dziwnych tabel
Author: KA-RAM-BA
Date: Mon, 21 Nov 2016 13:27
Date: Mon, 21 Nov 2016 13:27
15 lines
1798 bytes
1798 bytes
> powinno dać to czego pragniesz: > > select o.im, o.nz > , max(d.dt) d_dt > , case when max(p.dt) > max(d.dt) then max(p.dt) end p_dt > from osoby o > left join dokumenty d > on o.pesel = d.pesel > left join pisma p > on o.pesel = p.pesel > and p.dt > d.dt > group by o.psl, o.im, o.nz; > Wielkie dzięki, działa. O to mi chodziło. Potrzebuję wyciągnąć dane do statystyk na bieżąca chwilę więc to mi w zupełności wystarczy.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads