[SQL] eliminacja podobnych rekordow
Kaiks - 12-01-2006 09:31
[SQL] eliminacja podobnych rekordow
witam pisalem wczesniej bez wiekszego odzewu wiec sprobuje raz jeszcze
mam baze (jedna tabela 'a') a(klucz, data, nr_b, nr_c, nr_d, abc, bcd)
pola w tabeli powtarzaja sie czasem, czasem nie, za wyjatkiem pola 'data' no i 'klucz' ono zmienia sie, potrzebuje wyziagnac z tej bazy wszystkie pola powtarzajace sie lacznie z ostatnia 'data' ale tylko raz.
np. a(1, 1999-01-02, 2, 6, 5, abc, bcd) a(2, 1999-09-02, 3, 7, 9, bcz, gcd) a(3, 2000-11-02, 4, 8, 10, fbc, jcd) a(4, 2001-01-22, 2, 6, 5, abc, bcd)
chce zeby mi wskazalo ostatnie 3 (1 i 4 powtarzaja sie oprocz daty data w 4 jest ostatnia.
probuje cos takiego
SELECT * FROM a where exists ( select DISTINCT [nr_c] from [a]);
ale pokazuje to wszystkie rekordy w bazie
ktos pomoze? z gory wielkie dzieki
pozdr, kx
Smith - 12-01-2006 09:31
> mam baze (jedna tabela 'a') > a(klucz, data, nr_b, nr_c, nr_d, abc, bcd) > > pola w tabeli powtarzaja sie czasem, czasem nie, za wyjatkiem pola > 'data' no i 'klucz' ono zmienia sie, potrzebuje wyziagnac z tej bazy > wszystkie pola powtarzajace sie lacznie z ostatnia 'data' ale tylko raz. > > np. > a(1, 1999-01-02, 2, 6, 5, abc, bcd) > a(2, 1999-09-02, 3, 7, 9, bcz, gcd) > a(3, 2000-11-02, 4, 8, 10, fbc, jcd) > a(4, 2001-01-22, 2, 6, 5, abc, bcd) > > chce zeby mi wskazalo ostatnie 3 (1 i 4 powtarzaja sie oprocz daty > data w 4 jest ostatnia. > > ktos pomoze?
Cześć
SELECT Max(data),nr_b, nr_c,nr_d, var_a, var_b FROM a GROUP BY nr_b, nr_c,nr_d, var_a, var_b
Pozdrawiam Paweł
Lucyna Witkowska - 12-01-2006 09:31
Kaiks <kaiks@nospam.com> napisał: > pisalem wczesniej bez wiekszego odzewu wiec sprobuje raz jeszcze
> mam baze (jedna tabela 'a') > a(klucz, data, nr_b, nr_c, nr_d, abc, bcd)
> pola w tabeli powtarzaja sie czasem, czasem nie, za wyjatkiem pola > 'data' no i 'klucz' ono zmienia sie, potrzebuje wyziagnac z tej bazy > wszystkie pola powtarzajace sie lacznie z ostatnia 'data' ale tylko raz.
> np. > a(1, 1999-01-02, 2, 6, 5, abc, bcd) > a(2, 1999-09-02, 3, 7, 9, bcz, gcd) > a(3, 2000-11-02, 4, 8, 10, fbc, jcd) > a(4, 2001-01-22, 2, 6, 5, abc, bcd)
> chce zeby mi wskazalo ostatnie 3 (1 i 4 powtarzaja sie oprocz daty > data w 4 jest ostatnia.
> probuje cos takiego
> SELECT * > FROM a > where exists ( select DISTINCT [nr_c] from [a]);
> ale pokazuje to wszystkie rekordy w bazie
Jaka baza?
SELECT * FROM a WHERE (data, nr_c) IN (SELECT max(data), nr_c FROM a GROUP BY nr_c);
Jesli potrzebne grupowanie po innych kolumnach - zapytanie trzeba zmodyfikowac.
Pozdrowienia, LW
Kaiks - 15-01-2006 19:16
Lucyna Witkowska napisał(a): > Kaiks <kaiks@nospam.com> napisał: > >>pisalem wczesniej bez wiekszego odzewu wiec sprobuje raz jeszcze > > >>mam baze (jedna tabela 'a') >>a(klucz, data, nr_b, nr_c, nr_d, abc, bcd) > > >>pola w tabeli powtarzaja sie czasem, czasem nie, za wyjatkiem pola >>'data' no i 'klucz' ono zmienia sie, potrzebuje wyziagnac z tej bazy >>wszystkie pola powtarzajace sie lacznie z ostatnia 'data' ale tylko raz. > > >>np. >>a(1, 1999-01-02, 2, 6, 5, abc, bcd) >>a(2, 1999-09-02, 3, 7, 9, bcz, gcd) >>a(3, 2000-11-02, 4, 8, 10, fbc, jcd) >>a(4, 2001-01-22, 2, 6, 5, abc, bcd) > > >>chce zeby mi wskazalo ostatnie 3 (1 i 4 powtarzaja sie oprocz daty >>data w 4 jest ostatnia. > > >>probuje cos takiego > > >>SELECT * >>FROM a >>where exists ( select DISTINCT [nr_c] from [a]); > > >>ale pokazuje to wszystkie rekordy w bazie > > > Jaka baza? > > SELECT * FROM a > WHERE (data, nr_c) IN > (SELECT max(data), nr_c FROM a GROUP BY nr_c); > > Jesli potrzebne grupowanie po innych kolumnach - zapytanie trzeba > zmodyfikowac. > > Pozdrowienia, > LW > > > NIESTETY OTRZYMUJE BLAD SKLADNIOWY :(
Kasia Balicka - 15-01-2006 19:17
> Lucyna Witkowska napisał(a): > > Kaiks <kaiks@nospam.com> napisał: > > > >>pisalem wczesniej bez wiekszego odzewu wiec sprobuje raz jeszcze > > > > > >>mam baze (jedna tabela 'a') > >>a(klucz, data, nr_b, nr_c, nr_d, abc, bcd) > > > > > >>pola w tabeli powtarzaja sie czasem, czasem nie, za wyjatkiem pola > >>'data' no i 'klucz' ono zmienia sie, potrzebuje wyziagnac z > tej bazy > >>wszystkie pola powtarzajace sie lacznie z ostatnia 'data' > ale tylko raz. > > > > > >>np. > >>a(1, 1999-01-02, 2, 6, 5, abc, bcd) > >>a(2, 1999-09-02, 3, 7, 9, bcz, gcd) > >>a(3, 2000-11-02, 4, 8, 10, fbc, jcd) > >>a(4, 2001-01-22, 2, 6, 5, abc, bcd) > > > > > >>chce zeby mi wskazalo ostatnie 3 (1 i 4 powtarzaja sie oprocz daty > >>data w 4 jest ostatnia. > > > > > >>probuje cos takiego > > > > > >>SELECT * > >>FROM a > >>where exists ( select DISTINCT [nr_c] from [a]); > > > > > >>ale pokazuje to wszystkie rekordy w bazie > > > > > > Jaka baza? > > > > SELECT * FROM a > > WHERE (data, nr_c) IN > > (SELECT max(data), nr_c FROM a GROUP BY nr_c); > > > > Jesli potrzebne grupowanie po innych kolumnach - zapytanie trzeba > > zmodyfikowac. > > > > Pozdrowienia, > > LW > > > > > > > NIESTETY OTRZYMUJE BLAD SKLADNIOWY :(
Proponuje cos takiego
select nr_b, nr_c, nr_d, abc, bcd, max(data) from a group by nr_b, nr_c, nr_d, abc, bcd
gdybys chcial jeszcze sprawdzać liczbe powtorzen to musial bys zastosowac klauzule having Proponuje jakiegos helpa poczytac. Kasia
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.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 |
|