ďťż
 
[PostgreSql] Czy macie pomysł jak skonstruować selekta ďťż
 
[PostgreSql] Czy macie pomysł jak skonstruować selekta
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

[PostgreSql] Czy macie pomysł jak skonstruować selekta



slawekj - 15-05-2007 00:08
[PostgreSql] Czy macie pomysł jak skonstruować selekta
  Witam,

Mam tabele NUMERKI w której przechowuje kombinacje numerów w jednym polu
typu varchar

SELECT wynik FROM numerki WHERE id=1;
wynik
----------------------------------------------------------------
(91325,44001,96057,101168,97874,95381,94694,94703, 92473,88127)

Przechowuje to w ten sposób aby następnie skontruować poniższe zapytanie
za pomocą perla:

$wynik='(1,2,3,4,5,6,7,8,9,10)';
$query="SELECT * FROM pozycje WHERE nr IN $wynik";

Czy da się jednak zrobić to za pomocą jednego zapytania podobnego do

SELECT * FROM pozycje WHERE nr IN (select wynik from numerki where id=1)

Bo jak wiadomo zapytanie to nie zadziała ponieważ podajemy ciąg znaków
zamiast listy.
Macie jakiś pomysł?
Oczywiście numery mogą być przechowywane w inny sposób, zależy mi jednak aby
były w jednym rekordzie
i chyba także w tym samym polu.

Pozdrawiam
Sławek





=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 15-05-2007 00:08

  slawekj wrote at 2007-05-14 16:24:
> Witam,
>
> Mam tabele NUMERKI w której przechowuje kombinacje numerów w jednym polu
> typu varchar
>
> SELECT wynik FROM numerki WHERE id=1;
> wynik
> ----------------------------------------------------------------
> (91325,44001,96057,101168,97874,95381,94694,94703, 92473,88127)
>
> Przechowuje to w ten sposób aby nastĂŞpnie skontruowaĂŚ poniÂższe zapytanie
> za pomocÂą perla:
>
> $wynik='(1,2,3,4,5,6,7,8,9,10)';
> $query="SELECT * FROM pozycje WHERE nr IN $wynik";
>
> Czy da siĂŞ jednak zrobiĂŚ to za pomocÂą jednego zapytania podobnego do
>
> SELECT * FROM pozycje WHERE nr IN (select wynik from numerki where id=1)
>
> Bo jak wiadomo zapytanie to nie zadziaÂła poniewaÂż podajemy ciÂąg znaków
> zamiast listy.
> Macie jakiÂś pomysÂł?
> OczywiÂście numery mogÂą byĂŚ przechowywane w inny sposób, zaleÂży mi jednak aby
> byÂły w jednym rekordzie
> i chyba takÂże w tym samym polu.

użyj kolumny typu int[] i operatora @>

CREATE TABLE numerki ( id serial primary key, wynik int[] ) ;
insert into numerki(wynik) select ARRAY[1,2,3];
insert into numerki(wynik) select ARRAY[4,5,6];
select * from numerki where wynik @> ARRAY[1];
select * from numerki where wynik @> ARRAY[4,5];

w twoim przypadku
SELECT * FROM pozycje WHERE ARRAY[nr] <@ (select wynik from numerki where id=1)

F.




slawekj - 16-05-2007 00:00

  > CREATE TABLE numerki ( id serial primary key, wynik int[] ) ;
> insert into numerki(wynik) select ARRAY[1,2,3];
> insert into numerki(wynik) select ARRAY[4,5,6];
> select * from numerki where wynik @> ARRAY[1];
> select * from numerki where wynik @> ARRAY[4,5];
>
> w twoim przypadku
> SELECT * FROM pozycje WHERE ARRAY[nr] <@ (select wynik from numerki where
> id=1)
> F.

Pewnie będzie działać ładnie, jednak po dokumentacji wynika że w mojej
wersji Postgresa 7.4
nie mogę jeszcze korzystać z operatorów <@ i @>
Chyba będę musiał zainstalować nowa wersję.

Dziękuję i pozdrawiam
Sławek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ets2.xlx.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