🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #86

Re: Bylo: podwojne filtrowanie -- przyklad [SQL]

#86
From: Tomasz Rubaj
Date: Wed, 31 Mar 1999 10:04
79 lines
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-mail
References: <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