ďťż
 
dylemat z DISTINCT ďťż
 
dylemat z DISTINCT
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

dylemat z DISTINCT



d852 - 11-12-2005 17:32
dylemat z DISTINCT
  Witam serdecznie.
Czy SQL-owe słówko Distinct służy do tego, żeby wynik zapytania pozbawiony
był duplikatów w takim sensie, że nie istnieją dwa takie same wiersze, w
których wartości we wszystkich kolumnach są takie same ( czyli polecenie
zawsze odnosi się do wszystkich kolumn ), czy może można użyć go do
ograniczenia duplikatów w obrębie jednej bądź kilku ( ale nie wszystkich )
kolumn ?

Jeśli nie można to jak tego dokonać ?

Innymi słowy :
Szukam w necie uczciwie opisanej składni, ale trafiam tylko na przykłady
typu :
select distinct kolumna1, kolumna2, kolumna3 from tabela
Jeśli dobrze rozumiem, w wyniku nie będzie 2 wierszy posiadających takie
same wartości we _wszystkich_ kolumnach.
Ja potrzebuję czegoś na wzór :
select kolumna1, distinct kolumna2, distinct kolumna3 from tabela,
czyli w wynikach nie może być 2 wierszy które posiadają takie same wartości
w kolumnie2 i kolumnie3 a nie wszystkich kolumnach występujących w
zapytaniu.

Pozdrawiam.
Darek.





Bartek Siebab - 11-12-2005 17:32

  d852 dnia 2005-12-10 18:35:
> Innymi słowy :
> Szukam w necie uczciwie opisanej składni, ale trafiam tylko na przykłady
> typu :
> select distinct kolumna1, kolumna2, kolumna3 from tabela
> Jeśli dobrze rozumiem, w wyniku nie będzie 2 wierszy posiadających takie
> same wartości we _wszystkich_ kolumnach.
> Ja potrzebuję czegoś na wzór :
> select kolumna1, distinct kolumna2, distinct kolumna3 from tabela,
> czyli w wynikach nie może być 2 wierszy które posiadają takie same wartości
> w kolumnie2 i kolumnie3 a nie wszystkich kolumnach występujących w
> zapytaniu.

no to może:
http://www.postgresql.org/docs/8.1/i...ql-select.html
gdzie właśnie masz opisane to co chcesz uzyskać (distinct on)

--
..---------- -------- ------ ---- ---- --- - -- -
| Bartek `saphire` Siebab http://bartek.siebab.net




d852 - 11-12-2005 17:32

 
Użytkownik "Bartek Siebab" <bs@vt.pl> napisał w wiadomości
news:dnf4vd$foo$1@nemesis.news.tpi.pl...

> no to może:
> http://www.postgresql.org/docs/8.1/i...ql-select.html
> gdzie właśnie masz opisane to co chcesz uzyskać (distinct on)
>

To chyba to czego szukam jeśli chodzi o ideę, ale chciałbym żeby to
zadziałało w MSAccess :/
Czy (distinct on) to konstrukcja występująca tylko w PostgreSQL ?




Vez Do Han - 11-12-2005 17:32

  d852 napisał(a):
[...]
> Ja potrzebuję czegoś na wzór :
> select kolumna1, distinct kolumna2, distinct kolumna3 from tabela,
> czyli w wynikach nie może być 2 wierszy które posiadają takie same wartości
> w kolumnie2 i kolumnie3 a nie wszystkich kolumnach występujących w
> zapytaniu.
>
> Pozdrawiam.
> Darek.
>
>

Czyli jak jest:
Kol1 Kol2 Kol3
1 1 1
1 1 2
1 2 1
2 1 1
2 1 2
2 2 1

Chciałbyś uzyskać
Kol1 Kol2 Kol3
? 1 1
? 1 2
? 2 1

Niestety musisz określić co ma być wyświetlane w Kol2 (na przykład
wartość minimalna) w każdym bądź razie tu dobrze jest podać jakąś
funkcję agregującą.
Jak już będziesz wiedział to użyj group by.





d852 - 11-12-2005 17:32

  >Chciałbyś uzyskać
>Kol1 Kol2 Kol3
>? 1 1
>? 1 2
>? 2 1

>Niestety musisz określić co ma być wyświetlane w Kol2 (na przykład wartość
>minimalna) w każdym bądź razie tu dobrze jest podać jakąś funkcję
>agregującą.
>Jak już będziesz wiedział to użyj group by.

W sumie to masz rację, ale chyba miałeś na myśli Kol1 ( a nie Kol2 ).
Chyba, że czegoś nie rozumiem.




Starszak44 - 11-12-2005 17:32

  Użytkownik "d852" <daro852@poczta.onet.pl> napisał w wiadomości
news:dnf3jl$gsi$1@news.onet.pl...
> Ja potrzebuję czegoś na wzór :
> select kolumna1, distinct kolumna2, distinct kolumna3 from tabela,
> czyli w wynikach nie może być 2 wierszy które posiadają takie same
> wartości w kolumnie2 i kolumnie3 a nie wszystkich kolumnach występujących
> w zapytaniu.

Z tego co piszesz wynika, że wcale nie jest Ci potrzebna klauzula DISTINCT,
tylko raczej zapytanie grupujące:
SELECT
FIRST(Kolumna1), Kolumna2, Kolumna3
FROM Tabela
GROUP BY Kolumna2, Kolumna3

Oczywiście zamiast FIRST możesz użyć dowolnej innej funkcji agregującej (np.
LAST, COUNT, MAX itp.).

Pozdrawiam, Starszak44




Vez do Han - 21-12-2005 12:14

  Użytkownik "d852" <daro852@poczta.onet.pl> napisał w wiadomości
news:dnfgi9$omn$1@news.onet.pl...
> >Chciałbyś uzyskać
> >Kol1 Kol2 Kol3
> >? 1 1
> >? 1 2
> >? 2 1
>
> >Niestety musisz określić co ma być wyświetlane w Kol2 (na przykład
wartość
> >minimalna) w każdym bądź razie tu dobrze jest podać jakąś funkcję
> >agregującą.
> >Jak już będziesz wiedział to użyj group by.
>
> W sumie to masz rację, ale chyba miałeś na myśli Kol1 ( a nie Kol2 ).
> Chyba, że czegoś nie rozumiem.
>
Tak, Kol1 miałem na myśli.




Trzypion - 21-12-2005 12:14

  On Sat, 10 Dec 2005 18:35:05 +0100, "d852" <daro852@poczta.onet.pl>
wrote:

>Witam serdecznie.
>Czy SQL-owe słówko Distinct służy do tego, żeby wynik zapytania pozbawiony
>był duplikatów w takim sensie, że nie istnieją dwa takie same wiersze, w
>których wartości we wszystkich kolumnach są takie same ( czyli polecenie
>zawsze odnosi się do wszystkich kolumn ), czy może można użyć go do
>ograniczenia duplikatów w obrębie jednej bądź kilku ( ale nie wszystkich )
>kolumn ?

Nie istniejąa dwa identyczne rekordy zwrócone przez zapytaanie.

>select kolumna1, distinct kolumna2, distinct kolumna3 from tabela,
>czyli w wynikach nie może być 2 wierszy które posiadają takie same wartości
>w kolumnie2 i kolumnie3 a nie wszystkich kolumnach występujących w
>zapytaniu.

No to musisz rozbudować zapytanie. Przede wszystkim zastanów się co ma
być wynikiem takiego zapytania z tabeli jak poniżej:

1 2 3
1 3 4
2 2 5
3 4 6
5 6 6

?
--
___________ (R)
/_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122 688
___/ /_ ___ ul. Ludwiki 1 m. 74, 01-226 Warszawa
_______/ /_ http://trzypion.oldfield.org.pl/fotk...rterka/II_MPL/
___________/ GG: 3524356
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Ciekawosta =?iso-8859-2?q?wydajno=B6ci?= DISTINCT i GROUP BY na PostgreSQLu [MS SQL] count distinct na wielu kolumnach problem z "create view" i "distinct" w postgresql 8 problem przy selectcie z distinct'em group by vs distinct - wydajnosc distinct w połączonych tabelach DISTINCT ACCESS MySQL & distinct on Problem z DISTINCT ... NEC vs EIZO & PrintFIX/Spyder vs i1 - dylematy
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.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