ďťż
 
[postgres] Jak =?iso-8859-2?Q?znale=BC=E6_liczby_kt=F3rych?= brakuje ďťż
 
[postgres] Jak =?iso-8859-2?Q?znale=BC=E6_liczby_kt=F3rych?= brakuje
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[postgres] Jak =?iso-8859-2?Q?znale=BC=E6_liczby_kt=F3rych?= brakuje



sash668 - 20-10-2007 00:02
[postgres] Jak =?iso-8859-2?Q?znale=BC=E6_liczby_kt=F3rych?= brakuje
  Witam,

Mam w tabeli:
id integer,
liczba integer

W 'liczba' mam liczby takie, że powinny być wszystkie od 1 do np. 3000 wiem
że jakichś brakuje, jak sprawdzić jakich?

'id' ma się nijak do 'liczba' i może mieć różne dziwne wartości.

Lokalnie napisałem procedurę do jednokrotnego odpalenia i wszystko jasne,
ale okazało się, tam gdzie ma to być sprawdzone nie ma plpgsql i zonk -
dlatego musi to być sql.

Możliwe, że mam jakieś zaćmienie, ale po prostu brak pomysłów.

--
Best regards
sash668
na dżimejl dot kom





Grzegorz Danowski - 21-10-2007 00:00
=?iso-8859-2?Q?Re:_=5Bpostgres=5D_Jak_znale=BC=E6_liczby_kt=F 3rych_brakuje?=
  "sash668" <correct.email@in.sig> wrote in message
news:1ay31epumzfvr.dlg@fnfufvkfvkrvtug.net...
> Mam w tabeli:
> id integer,
> liczba integer
>
> W 'liczba' mam liczby takie, że powinny być wszystkie od 1 do np. 3000
> wiem
> że jakichś brakuje, jak sprawdzić jakich?
>
> 'id' ma się nijak do 'liczba' i może mieć różne dziwne wartości.
>
> Lokalnie napisałem procedurę do jednokrotnego odpalenia i wszystko jasne,
> ale okazało się, tam gdzie ma to być sprawdzone nie ma plpgsql i zonk -
> dlatego musi to być sql.
>
> Możliwe, że mam jakieś zaćmienie, ale po prostu brak pomysłów.

Najszybszym rozwiązaniem będzie chyba dodanie pomocniczej tabeli (Numbers) z
wszystkimi numerami od 1 do np. 10000, później wystarczy:
Select
OneNumber
From
Numbers As N
Left Join
TwojaTabelka As T
On
N.OneNumber = T.liczba
Where
OneNumber <= 3000
And
T.liczba Is Null

Ewentualnie można kombinować z takimi zapytaniami, które zwrócą wszystkie
liczby, które nie mają liczby większej (albo mniejszej) od nich i po dodaniu
(odjęciu) jedynki będziesz miał pierwszą (ostatnią) liczbę z conajmniej
pojedyńczej serii. Idąc tym tropem da się ustalić całe przedziały (początek
i koniec). Ale dla dużych tabel będzie to mało wydajne.

Select
liczba + 1 As PierwszaBrakujacaWPrzedziale
From
TwojaTabelka As T
Where
Exists(
Select
* -- ewentualnie wpisz 1
From
TwojaTabelka As N
Where
N.liczba > T.liczba --czyli wszystkie większe liczby
Having
Min(liczba) - 1 > T.liczba --najmniejsza większa liczba jest
większa o 1
)

Pozdrawiam
Grzegorz




hubert depesz lubaczewski - 21-10-2007 00:00

  Dnia 19.10.2007 sash668 <correct.email@in.sig> napisał/a:
> W 'liczba' mam liczby takie, że powinny być wszystkie od 1 do np. 3000 wiem
> że jakichś brakuje, jak sprawdzić jakich?
> 'id' ma się nijak do 'liczba' i może mieć różne dziwne wartości.

http://www.depesz.com/index.php/2007...nerate_series/

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




A.L.E.C - 21-10-2007 00:00

  sash668 pisze:
> Witam,
>
> Mam w tabeli:
> id integer,
> liczba integer
>
> W 'liczba' mam liczby takie, że powinny być wszystkie od 1 do np. 3000 wiem
> że jakichś brakuje, jak sprawdzić jakich?

nie napisałeś jaka wersja, ale generate_series() się do tego wspaniale
nadaje
http://www.depesz.com/index.php/2007...nerate_series/

--
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl





sash668 - 21-10-2007 00:00

  hubert depesz lubaczewski <depesz@depesz.com> in
<news:lmmou4-bkj.ln1@depesz.com> wrote:

> Dnia 19.10.2007 sash668 <correct.email@in.sig> napisał/a:
>> W 'liczba' mam liczby takie, że powinny być wszystkie od 1 do np. 3000 wiem
>> że jakichś brakuje, jak sprawdzić jakich?
>> 'id' ma się nijak do 'liczba' i może mieć różne dziwne wartości.
> http://www.depesz.com/index.php/2007...nerate_series/

Dzięki wszystkim za odp., dokładnie tego potrzebowałem :-).

Moje pomysły oscylowały w okolicach tabeli tymczasowej, tak jak proponował
Grzegorz.

--
Best regards
sash668
na dżimejl dot kom
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Wstawianie nowego wiersza w przypadku jego braku podczas SELECT w PostgreSQL
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ponland.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com