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.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.platanvarne633.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 |
|