Article View: pl.comp.lang.delphi.bazy-danych
Article #86Re: Bylo: podwojne filtrowanie -- przyklad [SQL]
From: Tomasz Rubaj
Date: Wed, 31 Mar 1999 10:04
Date: Wed, 31 Mar 1999 10:04
79 lines
3373 bytes
3373 bytes
Maciej MACiAS Pilichowski wrote: > Moze podam przyklad o co mi chodzi, to bedzie latwiej. > > Mam sobie spis ludnosci -- jedna baza. > > Mam spis typow pojazdow. W tejze liscie jest pole z nazwa dodatkowej > bazy danych zawierajacej specyficzne dane odnosnie pojazdu. > > Mam liste wszystkich pojazdow. Sa tu takze pola odpowiadajace za cechy > wspolne pojazdow. > > No i sa poszczegolne listy pojazdow -- samochodow, rowerow, motocykli. > > Wazniejsze pola: > a) Spis ludnosci -- Id. > b) Spis typow pojazdow -- NazwaDodatkowejBazy. > c) Spis pojazdow -- IdWlasciciela, IdPojazdu /wskazuje na pojazd w > dodatkowej bazie/, IdTypuPojazdu. > > Dzialanie wyobrazam sobie tak. Wybieram wlasciciela. Wybieram typ > pojazdu /np. samochod/. Pokazuje mi sie lista wszystkich samochod > goscia. > > O ile wyrzucenie danych wspolnych dla pojazdow /np. liczba kol, kolor/ > z listy pojazdow, to nie jest problem /Query1/: > > SELECT * FROM lista_pojazdow WHERE (IdWlasciciela=Obywatele.Id) AND > (IdTypuPojazdu=ListaTypow.Id) > > o tyle jest juz klopot z wyselekcjonowaniem z danej bazy dodatkowej > informacji. Idealem bylaby moznosc napisania > > SELECT * FROM :NazwaDodatkowejBazy WHERE (Query1.IdPojazdu=Id) > > przy ustawionym DataSource na liste typow pojazdow. > > Jak na razie nie wpadam na zadne eleganckie rozwiazanie. Wstawienie do > Query2 tego co jest w Query1 do mnie nie przemawia. Moze bedzie tez > rozwiazaniem JOIN -- watek wyzej. > > Prowizorycznie dorzucilem jeszcze jedno pole juz bezposrednio w > dodatkowych bazach pojazdow -- IdWlasciciela. Wtedy zapytanie dla > Query2 jest banalne. No, ale z kolei irytuje mnie nadmiarowosc danych. > > Moze ktos podrzuci mi jakas ciekawa idee? > Moze troche przeprojektujesz baze? Jak to zrobic Rozumiem ze dane specyficzne dla kazdego modelu sa pamietane dla kazdej jednostki w osobnej bazie. Moze wygodniej bedzie trzymac te wszystkie unikalne cechy w jednej tablicy o polach: (moze IdWlasciciela) IdPojazdu (powyzsze pola to klucz) NazwaCechy WartoscTejCechy Albo (moze IdWlasciciela) IdPojazdu IdCechy I jeszcze jedna osobna tabele z cechami. To jesli wiele samochodow moze miec wiele wspolnych cech. Dane o cechach pojazdu wyswietlasz w wierszach. Nie trzeba wtedy zadnego brzydkiego > SELECT * FROM :NazwaDodatkowejBazy WHERE (Query1.IdPojazdu=Id) Jesli nie napisalem tego dosc jasno - odezwij sie na priva. Poczytaj troche o projektowaniu relacyjnych baz danych. Postaciach normalnych itd. Jesli bedziesz sie trzymal pewnych zasad projektowania to na ogol nie bedziesz popadal w problemy z "dziwnymi" zapytaniami, czy metodami dodawania rekordow. TRubaj
Technical Details
Message-ID:
<3701F329.2A565377@ajax.umcs.lublin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!news.sim.pl!lublin.pl!not-for-mailReferences:
<3707caae.3342053@rymunda.torun.pdi.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!news.sim.pl!lublin.pl!not-for-mail From: Tomasz Rubaj <trubaj_NoSpam@ajax.umcs.lublin.pl> Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Re: Bylo: podwojne filtrowanie -- przyklad [SQL] Date: Wed, 31 Mar 1999 12:04:25 +0200 Lines: 79 Message-ID: <3701F329.2A565377@ajax.umcs.lublin.pl> References: <3707caae.3342053@rymunda.torun.pdi.net> NNTP-Posting-Host: pc209.freeland.lublin.pl Mime-Version: 1.0 X-Mailer: Mozilla 4.5 [en] (Win95; I) X-Accept-Language: en Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit