<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=423</link>
		<description><![CDATA[Najświeższe odpowiedzi w Wyszukiwanie danych - pilna pomoc potrzbna!!!.]]></description>
		<lastBuildDate>Fri, 09 Apr 2010 16:09:09 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1948#p1948</link>
			<description><![CDATA[Coś takiego,ale nie mam pod ręką postgresa żeby sprawdzić czy gdzieś nie ma błędu.
Tylko nie wiem co za typ datetime, ktorego uzyłeś.
Jakiego postgresa uzywasz?
[code]
select nazwisko,data_ur from pracownicy p join zespoly z on(p.nr_zesp=z.nr_zesp) and
z.nazwa_zesp='XYZ' and p.data_ur>all
(select data_ur from pracownicy p1 join zespoly z1 on(p1.nr_zesp=z1.nr_zesp) and
z.nazwa_zesp='ZYX')
[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 09 Apr 2010 16:09:09 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1948#p1948</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1947#p1947</link>
			<description><![CDATA[[quote=rski]I jestes pewien że to działa? Mam wątpliwości.[/quote]

No jak sprawdziłem wynik zapytania z tym co jest w tabelach - no to wyszło mi to samo (przynajmniej tak mi się wydaje). :|

/*13*/

[code]
select * from
    (select P.NAZWISKO, P.DATA_UR as D1 from PRACOWNICY P join ZESPOLY Z on P.NR_ZESP = Z.NR_ZESP where P.PLEC = 'M' and Z.NAZWA_ZESP='CERTIO' group by P.NAZWISKO, P.DATA_UR) T1, 
    (select P.NAZWISKO, P.DATA_UR as D2 from PRACOWNICY P join ZESPOLY Z on P.NR_ZESP = Z.NR_ZESP where Z.NAZWA_ZESP = 'KONGO' group by P.NAZWISKO, P.DATA_UR) T2
where T1.D1>T2.D2;
[/code]

Coś nie mogę sobie poradzić, co by w rezultacie zwracało tylko po jednej kolumnie i po jednym wystąpieniu danej osoby wynikowej.
Powinno zwracać 2 nazwiska wraz z ich datami urodzenia (tak wynika z rekordów w bazie), natomiast dostaje coś takiego jak niżej i szczerze powiem, że nie mam pojęcia co jest nie tak (wynik generalnie jest prawidłowy, tyle że forma jego wyświetlenia do bani):
[code]
[nazwisko]                         [data_ur]                        [nazwisko]            [data_ur]
KOWALEWSKI         1984-09-25 00:00:00.000    KANAREK            1974-07-30 00:00:00.000
KOWALEWSKI         1984-09-25 00:00:00.000    KOWALSKA          1981-01-17 00:00:00.000
KOWALIK                    1982-03-21 00:00:00.000    KANAREK            1974-07-30 00:00:00.000
KOWALIK                    1982-03-21 00:00:00.000    KOWALSKA          1981-01-17 00:00:00.000
[/code]

Help. :)]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Fri, 09 Apr 2010 09:00:39 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1947#p1947</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1946#p1946</link>
			<description><![CDATA[I jestes pewien że to działa? Mam wątpliwości.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 09 Apr 2010 08:53:36 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1946#p1946</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1945#p1945</link>
			<description><![CDATA[[quote=rski]

/* 12 */ - jest podobne do /* 7 */

[/quote]

No to w takim razie stworzyłem cuś takowego : :)

[code]
select distinct Z.NAZWA_ZESP from ZESPOLY Z except select Z.NAZWA_ZESP from ZESPOLY Z 
right outer join PRACOWNICY P on P.NR_ZESP = Z.NR_ZESP
where P.PLEC not in (select P.PLEC from PRACOWNICY P where P.PLEC = 'M')
order by Z.NAZWA_ZESP
[/code]

Ale pewno sam na to podobieństwo bym za szybko nie wpadł. Dziki twojej wskazówce poszło mi szybko :) :D]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Fri, 09 Apr 2010 08:45:18 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1945#p1945</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1944#p1944</link>
			<description><![CDATA[[code]
/* 11 */
select nazwa_zesp,count(*) as ilosc from pracownicy join zespoly on (pracownicy.nr_zesp=zespoly.nr_zesp) group by nazwa_zesp order by ilosc desc;
[/code]

/* 12 */ - jest podobne do /* 7 */
/* 13 */ jest podobne do /* 10 */]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 09 Apr 2010 07:36:22 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1944#p1944</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1943#p1943</link>
			<description><![CDATA[[code]
/* 11 */
select nazwa_zesp,count(*) as ilosc from pracownicy join zespoly on (pracownicy.nr_zesp=zespoly.nr_zesp) group by nazwa_zesp order by ilosc desc;
[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 09 Apr 2010 07:33:04 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1943#p1943</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1942#p1942</link>
			<description><![CDATA[[quote=rski]Tylko że distinct w tej twojej wersji to jest chyba zbędny, w końcu group by generuje grupy z różnymi nazwa_zesp.[/quote]

Masz rację. Jakby nie było wciąż się uczę.
Pomożesz mi trochę w sprawie tych ostatnich 5 (od 11-15)? Chociaż jakaś wskazówka, co do poleceń które można by użyć?]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Fri, 09 Apr 2010 06:46:55 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1942#p1942</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1941#p1941</link>
			<description><![CDATA[Tylko że distinct w tej twojej wersji to jest chyba zbędny, w końcu group by generuje grupy z różnymi nazwa_zesp.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 08 Apr 2010 12:51:08 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1941#p1941</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1940#p1940</link>
			<description><![CDATA[[quote=rski]Skoro tak to musisz poprawić zapytanie 9 dodając jeszcze jedną tabele analogicznie do połączenia z twojego rozwiązania.

Własnie zauważyłem że 8 tez już wcześniej rozwiązałem :).

Czekam na inne twoje pomysły :).[/quote]

Ok, postaram się poprawić, a co do /*8*/ to też zauważyłem, ale nie wypadało tak jakoś zwracać uwagi "dobrej duszy" :)


[b]To może ja tak zawrotnie zapytam, jakich "poleceń' można wy użyć w pozostałych - było by mi łatwiej coś wykombinować?[/b]

Poprawiłem swój wynalazek - teraz daje to co i Twój i chyba teraz jest dobrze:
[code]
select distinct Z.NAZWA_ZESP from ZESPOLY Z except select Z.NAZWA_ZESP from ZESPOLY Z 
right outer join PRACOWNICY P on P.NR_ZESP = Z.NR_ZESP
left outer join WYPLATY W on W.NR_PRAC = P.NR_PRAC
where P.NR_PRAC not in (select W.NR_PRAC from WYPLATY W)
order by Z.NAZWA_ZESP
[/code]

A teraz moja wersja /* 9 */
[code]
select distinct Z.NAZWA_ZESP from ZESPOLY Z
left outer join PRACOWNICY P on P.NR_ZESP = Z.NR_ZESP
right outer join WYPLATY W on W.NR_PRAC = P.NR_PRAC
where P.NR_PRAC = W.NR_PRAC
group by Z.NAZWA_ZESP having SUM(W.KWOTA)>1000
order by Z.NAZWA_ZESP
[/code]]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Thu, 08 Apr 2010 10:55:13 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1940#p1940</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1939#p1939</link>
			<description><![CDATA[Skoro tak to musisz poprawić zapytanie 9 dodając jeszcze jedną tabele analogicznie do połączenia z twojego rozwiązania.

Własnie zauważyłem że 8 tez już wcześniej rozwiązałem :).

Czekam na inne twoje pomysły :).]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 08 Apr 2010 10:52:07 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1939#p1939</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1938#p1938</link>
			<description><![CDATA[[quote=rski]
Twoje raczej pokaze zespoly, ktore maja przynajmniej jednego pracownika z takimi zarobkami a to nie to samo co wszyscy pracownicy z zarobkami >0;
Poza tym chyba niepotrzebnie korzystasz z tabeli pracownicy bo o ile dobrze zrozumialem to zespoly laczy sie z wyplatami po kolumnach nr_prac_kz=nr_prac, tak ? mam racje?
[/quote]

Faktycznie, co do mojego "wynalazku", to masz rację - moje niedopatrzenie (muszę to poprawić jakoś). W tym momencie Twój "wynalazek" jest prawidłowy zapewne.

Co to tabeli "Pracownicy", to jest ona potrzebna gdyż "nr_prac_kz" to nie to samo co "nr_prac". To pierwsze to identyfikator kierownika zespołu, a to drugie indywidualnego pracownika. Innymi słowy nie każdy pracownik jest kierownikiem zespołu.

Dzięki za wszelką pomoc i chętnie przyjmę więcej. Ja też myśle dalej. Ciężko jest wymyślić sposób, jeśli nie ma się wiedzy jakich "narzędzi" użyć.]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Thu, 08 Apr 2010 10:45:46 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1938#p1938</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1937#p1937</link>
			<description><![CDATA[[quote]
select distinct NAZWA_ZESP from ZESPOLY Z
join PRACOWNICY P on P.NR_ZESP = Z.NR_ZESP
join WYPLATY W on W.NR_PRAC = P.NR_PRAC
where W.KWOTA > 0
[/quote]
Twoje raczej pokaze zespoly, ktore maja przynajmniej jednego pracownika z takimi zarobkami a to nie to samo co wszyscy pracownicy z zarobkami >0;
Poza tym chyba niepotrzebnie korzystasz z tabeli pracownicy bo o ile dobrze zrozumialem to zespoly laczy sie z wyplatami po kolumnach nr_prac_kz=nr_prac, tak ? mam racje?
[code]
/* 8 */ jest naprawde proste, poradzisz sobie

/* 9 */
select nazwa_zesp from zespoly z,wyplaty w where z.nr_prac_kz=w.nr_prac group by z.nazwa_zesp having sum(kwota)>1000;


/* 10 */ cos w tym stylu chyba zadziala
select nazwisko from (select nazwisko,sum(kwota) as k1 from pracownicy p , wyplaty w where p.nr_prac=w.nr_prac group by nazwisko, p.nr_prac) t1, (select sum(kwota) as k2 from pracownicy p,wyplaty w where p.nr_prac=w.nr_prac and nazwisko='Y') t2 where t1.k1>t2.k2;
[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 08 Apr 2010 10:29:53 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1937#p1937</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1936#p1936</link>
			<description><![CDATA[[quote=rski]Ale musisz to przetestowac
[code]
/* 7 */
select nazwa_zesp from zespoly except select nazwa_zesp from zespoly where nr_prac_kz not in (select nr_prac from wyplaty);
[/code][/quote]

Ja to zrobiłem tak:
[code]
select distinct NAZWA_ZESP from ZESPOLY Z
join PRACOWNICY P on P.NR_ZESP = Z.NR_ZESP
join WYPLATY W on W.NR_PRAC = P.NR_PRAC
where W.KWOTA > 0
[/code]
Tak analizując to działa niby, choć daje co innego niż twój sposób - ciężko powiedzieć które jest dobre.

No nic, działam dalej, ale mimo wszystko proszę o dalszą pomoc. :)]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Thu, 08 Apr 2010 10:10:35 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1936#p1936</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1934#p1934</link>
			<description><![CDATA[Chwilowo pracuje i brak czasu, jak tylko się odrobię to postaram się coś stworzyć, bo nie szukam "jelenia", tylko pomocy. :)]]></description>
			<author><![CDATA[dummy@example.com (DaeronNenmacil)]]></author>
			<pubDate>Thu, 08 Apr 2010 06:45:24 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1934#p1934</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Wyszukiwanie danych - pilna pomoc potrzbna!!!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1933#p1933</link>
			<description><![CDATA[To przynajmniej pokaż co wymyśliłeś, żeby nie wyglądało że szukasz jelenia, który rozwiąże za ciebie zadania domowe.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 08 Apr 2010 05:15:13 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1933#p1933</guid>
		</item>
	</channel>
</rss>
