distinct w połączonych tabelach
floran - 04-06-2006 00:37
distinct w połączonych tabelach
Witam
W jaki sposób wyświetlić unikatowe rekordy z jednej kolumny w połaczonych tabelach ?
select distinct idelementu, kodkomputera, symbolkomputera from cz_elementy e, cz_daneelementow d where e.kodelementu = d.kodelementu
Powyższe zwraca rekordy w których dublowane są wartości w kolumnie idelementu. Powyższy zapis zdaje się, że odnosi się do całego rekordu (wszystkich pól w obrębie rekrodu) a mnie chodzi o unikatowe wart. w kolumnie idelementu. Baza danych to firebird.
pozdrawiam
floran - 06-06-2006 00:54
Użytkownik "floran" <floran@onet.pl> napisał w wiadomości news:e5ri6v$1f2$1@atlantis.news.tpi.pl... > Witam > > W jaki sposób wyświetlić unikatowe rekordy z jednej kolumny w połaczonych > tabelach ? > > select distinct idelementu, kodkomputera, symbolkomputera > from cz_elementy e, cz_daneelementow d > where e.kodelementu = d.kodelementu > > Powyższe zwraca rekordy w których dublowane są wartości w kolumnie > idelementu. Powyższy zapis zdaje się, że odnosi się do całego rekordu > (wszystkich pól w obrębie rekrodu) a mnie chodzi o unikatowe wart. w > kolumnie idelementu. Baza danych to firebird. > > pozdrawiam >
Coś słyszałem, że najpierw pogrupować "group by" a potem wybierać unikatowe dane ... ale jak ?
Rafal - 06-06-2006 00:54
=?ISO-8859-2?Q?Re: Re: distinct w po=B3=B1czonych tabelach?=
>Coś słyszałem, że najpierw pogrupować "group by" a potem wybierać unikatowe >dane ... ale jak ? moze tak?
select idelementu, kodkomputera, symbolkomputera from cz_elementy e, cz_daneelementow d where e.kodelementu = d.kodelementu group by idelementu
pozdr Rafal -sxat-> -- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
Migat - 06-06-2006 00:54
=?iso-8859-2?q?Re:_distinct_w_po=B3=B1czonych_tabelach?=
Rafal wrote: > moze tak? > > select idelementu, kodkomputera, symbolkomputera > from cz_elementy e, cz_daneelementow d > where e.kodelementu = d.kodelementu > group by idelementu
Taki select nie pojdzie bo wszystkie pola nieagregujace z selecta musza byc grupowane. Cos mi sie wydaje, ze tu problem bardziej lezy po storonie logiki a nie konstrukcji zapytania. Jezeli chcesz wyciagnac distinct idelementu, kodkomputera, symbolkomputera to oczywistym jest, ze nie dostaniesz distincta dla relacji wiele-do-wielu, lub jeden-do-wielu, jaka wydaje sie byc relacja elementy-komputery. Wyjasnij moze Co bys chcial uzyskac przez te zapytanie to moze napisze Ci cos wiecej.
Pzdr pb
floran - 06-06-2006 00:54
Użytkownik "Migat" <ionen@op.pl> napisał w wiadomości news:1149501195.859268.223400@i39g2000cwa.googlegr oups.com... > Rafal wrote: >> moze tak? >> >> select idelementu, kodkomputera, symbolkomputera >> from cz_elementy e, cz_daneelementow d >> where e.kodelementu = d.kodelementu >> group by idelementu > > Taki select nie pojdzie bo wszystkie pola nieagregujace z selecta musza > byc grupowane. > Cos mi sie wydaje, ze tu problem bardziej lezy po storonie logiki a nie > konstrukcji zapytania. Jezeli chcesz wyciagnac distinct idelementu, > kodkomputera, symbolkomputera to oczywistym jest, ze nie dostaniesz > distincta dla relacji wiele-do-wielu, lub jeden-do-wielu, jaka wydaje > sie byc relacja elementy-komputery. > Wyjasnij moze Co bys chcial uzyskac przez te zapytanie to moze napisze > Ci cos wiecej. > > Pzdr pb > Może wyjaśnię od początku o co chodzi i może coś się z tego urodzi :) Są 3 tabele:
1:klient
|kodpokoju|idklienta| |2 |201050|
2:daneklienta
|kodpokoju|symbolpokoju|nazwaklienta | |2 |RSA |Kowalski Adam|
3:licznikpokoju
|kodpokoju|numer| |4 |546 |
Chodzi o zapytanie, które zwróci idklienta, nazweklienta, kodpokoju, symbolpokoju, numer takie, w których numer nie jest puste a kodpokoju = 'ADM' lub 'RSA' lub 'KRS' Wspólna kolumna dla tych 3 tabel to kodpokoju.
Migat - 07-06-2006 00:47
=?iso-8859-2?q?Re:_distinct_w_po=B3=B1czonych_tabelach?=
floran wrote:
> Chodzi o zapytanie, które zwróci idklienta, nazweklienta, kodpokoju, > symbolpokoju, numer takie, > w których numer nie jest puste a kodpokoju = 'ADM' lub 'RSA' lub 'KRS'
Troche dziwna ta relacja. Nie wiem czy dobrze zrozumialem ale chyba cos takiego powinno zadzialac:
SELECT klient.idklienta,daneklienta.nazwaklienta,klient.k odpokoju, daneklienta.symbolpokoju from klient, daneklienta, licznikpokoju WHERE klient.kodpokoju = daneklienta.kodpokoju AND klient.kodpokoju = licznikpokoju.kodpokoju AND numer NOT IN ('ADM','RSA','KRS')
pzdr pb
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Połączenie C++ <-> MySQL 4.0. Biblioteka MySQL++.
[MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Polaczenie Oracle Database XE z Database 10g (10.1.0.4.2)
ORA-12154: TNS: nie udalo sie rozstrzygnac podanego identyfikatora polaczenia
TOAD blad polaczenia z serwerem: ORA-01031 insufficient privileges
MS SQL 2005 nie działa sqlmcd - nie może się połączyć
[mysql] wolne polaczenie zewnetrznych hostow z baza
last inser id i polaczenie z baza danych mysql
[FB, ODBC] Ilosc otwartych polaczen do bazy
zanotowane.pldoc.pisz.plpdf.pisz.plnawschodzie.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 |
|