<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Funkcja przeszukująco - porównująca]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=2228&amp;type=atom"/>
	<updated>2014-10-23T06:34:42Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=2228</id>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5366#p5366"/>
			<content type="html"><![CDATA[zamień linie FROM table_1 INNER JOIN table_2 ON raport_2.WART_7 = table_1.WART_3)
na 
FROM table_1 INNER JOIN table_2 ON raport_2.WART_7 = table_1.WART_3
WHERE (A BETWEEN B AND C)
)]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-23T06:34:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5366#p5366</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5365#p5365"/>
			<content type="html"><![CDATA[Wiesz co, chyba znam problem. Mój INER JOIN coś szwankuje i mi wiersze w których akurat są te zera po prostu zdublował. Zaraz dojdę czemu.

---EDIT---
Doszedłem. Wiem czemu mi tak dubluje ale chyba potrzebuję już naprawdę ostatni raz Twojej pomocy przy sklejeniu dwóch zapytań. Do tego swojego muszę jeszcze dodać warunek:
where 
(A BETWEEN B AND C)

I to musi się wykonać jeszcze przed tym drugim zapytaniem ale kurcze nie mam pomysłu jak to zrobić dlatego że kolumna z numerem wiersza powinna się dodać dopiero po tej mojej klauzuli where z tego względu że jak ją dodam wcześniej, później wykonam where to będę miał dziury w 'lp']]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-22T14:26:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5365#p5365</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5363#p5363"/>
			<content type="html"><![CDATA[Jeśli chcesz zobaczyć odfiltrowane wiersze to w klauzuli WHERE napisz 
not (
          coalesce((d.x = 0 and poprz_y = 0),false)= false
  and coalesce((d.y = 0 and nast_x = 0),false) = false
)]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-22T13:39:03Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5363#p5363</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5362#p5362"/>
			<content type="html"><![CDATA[Próbowałem tak już robić wczoraj ale dzieje się coś dziwnego bo w tabeli mam w sumie 3544 wiersze. Wynik zapytania zwraca mi 3538 wierszy no i super. Wszystko jest ok dlatego że powinien wyciąć mi 6 wierszy. Tylko kurcze nie wiem które mi wycina ponieważ w wyniku wiersze gdzie te 0 są, normalnie się wyświetlają :(.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-22T13:33:43Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5362#p5362</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5361#p5361"/>
			<content type="html"><![CDATA[Oto Ci chodziło?

with tabela as (SELECT
WART_1,
WART_2 as y,
WART_3,
WART_4,
WART_5 as x,
WART_6,
WART_7,
WART_8,
WART_9,
WART_10,
,row_number() over(order by WART_1) as lp
FROM table_1 INNER JOIN table_2 ON raport_2.WART_7 = table_1.WART_3)
select 
WART_1,
y as WART_2,
WART_3,
WART_4,
x as WART_5,
WART_6,
WART_7,
WART_8,
WART_9,
WART_10
from (select t.*
            ,lag(y) over (order by lp) as poprz_y
            ,lead(x) over (order by lp) as nast_x
        from tabela t) d
where coalesce((d.x = 0 and poprz_y = 0),false)= false
  and coalesce((d.y = 0 and nast_x = 0),false) = false;]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-22T13:18:53Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5361#p5361</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5360#p5360"/>
			<content type="html"><![CDATA[Wiesz co, faktycznie, jak przeanalizowałem i poprawiłem warunek trochę bo miałem błąd to działa prawidłowo ale troszeczkę nie taki efekt chcę uzyskać. W tej chwili on po prostu tworzy mi obok dwie kolumny z poprz_y i nast_x wycinając wartości gdzie poprz_y i nast_x jest 0. Efekt który ja chciałem uzyskać to w ogóle żeby takich wierszy nie wyświetlać. Czyli np w wiersz 98 znalazł w kolumnie WART_5 - 0 i w wierszu 99 w kolumnie WART_2 też znalazł 0. Takie 2 wiersze są wycinane ze wszystkimi danymi które znajdują się w pozostałych kolumnach. Czyli wiersza 98 i 99 w ogóle nie wyświetlam. W tej chwili faktycznie w tej kolumnie popz_y i nast_x nie mam tych wartości z zerami ale niestety obok mam te pozostałe wiersze z kolumnami i tam te dane już występują. A chciałbym żeby tego w ogóle nie wyświetlać. Jeszcze próbowałem to INNER JOIN-em zrobić ale coś nie chce za bardzo działać. Do tego zapytania jeszcze dochodzi mi jeden warunek gdzie wycinam wiersze w których wartości z 2 kolumn nie znajdują się pomiędzy pewnym zakresem ale ten warunek mam i on działa. Teraz dodatkowo muszę dorzucić warunek którego dotyczy temat. Już 2 dni nad tym siedzę :(, z PSQL-em styczności wcześniej nigdy nie miałem, s MySQL-em tak ale aż tak rozbudowanych kwerend nie pisałem.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-22T13:00:34Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5360#p5360</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5359#p5359"/>
			<content type="html"><![CDATA[zmień polecenie ,row_number() over() as lp na ,[b]row_number() over(order by WART_1) as lp[/b]

PS mam nadzieje, że pole WART_1 jest unikatowe w skali całego zbioru jeśli nie to musisz po przecinku dodać inne pole które posortuje twój zbiór danych]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-21T14:56:53Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5359#p5359</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5358#p5358"/>
			<content type="html"><![CDATA[No i wiem gdzie może być błąd. Czy dało by radę żeby przez wstawieniem row_number zrobić order by po WART_1? Bo na tym się wywala właśnie. Dlatego że aby mieć odpowiednio ułożone wiersze z wartościami WART_5 i WART_2 muszę zrobić order by po WART_1. Jak to zrobię po dodaniu row_number to mi rozwala kolejność. Czyli, najpierw sortuję po WART_1 i mam odpowiednio ułożoną tabelę a następnie dopiero do tak ułożonej jakbym dodał row_number to powinno być już ok.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-21T14:52:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5358#p5358</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5357#p5357"/>
			<content type="html"><![CDATA[patrz na rekordy w ten sposób
Jesli obserwujesz rekord o lp=100 to pole poprz_y będzie wartością WART_2 z rekordu o LP=99, a pole  nast_x będzie wartością WART_5 z wiersza o lp=101 

pole LP w tym przypadku decyduje o kolejności wierszy które są brane do analizy]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-21T14:44:21Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5357#p5357</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5356#p5356"/>
			<content type="html"><![CDATA[Ok, moja wina ponieważ pochrzaniłem warunki ale mimo wszystko jest coś nie tak.Bo w wierszu gdzie w WART_5 mam 0 to jako wartość poprz_y mam WART_2 ale z tego samego wiersza a powinno być 0.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-21T14:33:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5356#p5356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5355#p5355"/>
			<content type="html"><![CDATA[Możesz dać jakiś przykład?

Sprawdź czy nie ma takiego wiersza w danych z twojego selecta.]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-21T14:32:51Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5355#p5355</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5354#p5354"/>
			<content type="html"><![CDATA[Właśnie nie do końca działa. Efekt mam obecnie taki że utworzył mi w tabeli dodatkowy wiersz pod tym gdzie znalazł te z zerami i wiersz powstał ze sklejenia WART_5 i WART_2. Tak jakby zdublował mi dokładnie ten wiersz gdzie WART_2 była 0.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-21T14:20:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5354#p5354</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5353#p5353"/>
			<content type="html"><![CDATA[a to Ci działa?

with tabela as (SELECT
WART_1,
WART_2 as y,
WART_3,
WART_4,
WART_5 as x,
WART_6,
WART_7,
WART_8,
WART_9,
WART_10,
,row_number() over() as lp
FROM table_1 INNER JOIN table_2 ON raport_2.WART_7 = table_1.WART_3)
select *
from (select t.*
            ,lag(y) over (order by lp) as poprz_y 
            ,lead(x) over (order by lp) as nast_x 
        from tabela t) d 
where coalesce((d.x = 0 and poprz_y = 0),false)= false
  and coalesce((d.y = 0 and nast_x = 0),false) = false;]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-21T13:43:13Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5353#p5353</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5352#p5352"/>
			<content type="html"><![CDATA[Może inaczej, na chwilę obecną mam coś takiego:

select * from
(SELECT 
WART_1, 
WART_2, 
WART_3,
WART_4,
WART_5,
WART_6, 
WART_7,
WART_8,
WART_9,
WART_10
FROM table_1 INNER JOIN table_2 ON table_2.WART_7 = table_1.WART_3
order by WART_1 asc) as dane

W kolumnie WART_5 siedzi pierwsze 0 w kolumnie WART_2 może siedzieć drugie 0. I teraz w momencie natrafienia na 0 w kolumnie WART_5 sprawdzam czy w wierszu powyżej w kolumnie WART_2 też jest 0. Jeśli tak to te wiersze pomijam, jeśli nie to je wyświetlam.

WART_1 jest wartością po której sortuję. Nie są to numery po kolei ale zawsze w sytuacji kiedy znajdę w kolumnie WART_5 0 i 0 będzie też w kolumnie WART_2 to kolumnna WART_1 będzie różniła się o 1. Dla przykładu, mamy kolumny gdzie WART_1 przyjmuje wartości:
3
5
7
34
44
56
57
78
To jeśli w wierszu 57 w kolumnie WART_5 wystąpi zero to nie ma możliwości aby kolumna WART_2 miała inny numer wiersza jak 56. Zawsze będzie miała o 1 mniejszy.]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-21T13:37:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5352#p5352</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja przeszukująco - porównująca]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5351#p5351"/>
			<content type="html"><![CDATA[[quote=peter] ona działa wyłącznie na danych przechowywanych w tej samej partycji[/quote]

Co rozumiesz przez to stwierdzenie? 

Jeśli działa Ci powyższy przykład to będzie działał też i w twojej bazie, nie widzę żadnych zagrożeń!]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-21T13:30:04Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5351#p5351</id>
		</entry>
</feed>
