Article View: pl.comp.lang.delphi.bazy-danych
Article #90Re: Bylo: podwojne filtrowanie -- przyklad [SQL]
From: Maciej "MACiAS" Pilichowski
Date: Sat, 03 Apr 1999 09:23
Date: Sat, 03 Apr 1999 09:23
108 lines
4889 bytes
4889 bytes
Hej,
Dziekuje Ci serdecznie za odpowiedz. Czytam ja na razie 3 raz, wiec
moglem czegos nie wylapac, ale pozwolisz, ze pare uwag na goraco...
Generalnie jestem w trakcie przemyslen, czy robic cos z sama
struktura bazy, czy tez moze ja zostawic a pobawic sie w laczenie
tabel i zatrudnic, jeszcze nierozpoznanego przeze mnie, TUpdateSQL.
Problemem u mnie na razie jest to, ze u mnie dane siedza w dwoch
tabelach /vide post z przykladem/. Tzn. dane juz samych pojazdow. I o
ile z wyswietlaniem sobie juz poradzilem, to teraz nie wiem jak to
dziadostwo sortowac lacznie.
Indeksy mam zalozone dla listy pojazdow jako takich, bo w cechach nic
nie siedzi -- sa tam same cechy.
I jak dochodzi do sortowania, to oczywiscie nie moge z tym dojsc do
ladu. To jest glowny bol.
Chyba, ze znasz mozliwosc spinania dwoch tabel, jesli jedna jedna ma
zalozony indeks, a obie tabele sa w relacji 1:1 /tj. w pierwszej i
drugiej jest tyle samo rekordow, w pierwszej dla kazdego rekordu jest
jeden i tylko jeden rekord z bazy 2, i odwrotnie/.
>Wówczas np.
>tabela scechy.dbf (pola idscecha, nazwa) (s jak slownik)
>1, kolor
>2, dlugosc
Ok, przyda sie np. do tytulowania kolumn.
>tabela spojazdy.dbf (pola idspojazdu,nazwa)
>1, Trek
>2, Giant
Nadal kojarze.
>tabela dcechy.dbf (pola iddcechy, idspojazdu, idscechy) (d jak dopuszczalne
>cechy dla danego pojazdu)
>1, 1, 2 (Trek ma dlugosc)
>2, 1, 1 (kolor ramy tez jakis jest)
>3, 1, 5 (masa treka)
Ok, kojarze. Co mozna wrzucic za ceche do danego pojazdu.
>I teraz potrzebna ci bedzie w bazie pojazdow tylko wpis o wartosci danej
>cechy a juz nie pojazdu
No dobrze.
> (pola idpojazd, iddcechy, wartosc) (wartosc najlepiej jako
>string i robic konwersje)
>1, 1, 2 (trek - dlug, 2 m)
>1, 2, $FF002345 - (trek, kolor- kosc sloniowa)
Ok, czyli tutaj mamy wlasciwie spis pojazdow, ktore sa np. w miescie,
bez mowienia kto jest ich wlascicielem.
Na razie jednak to rozwiazanie juz w tym punkcie lapie minusy:
- pole jest string i trzeba dokonywac recznie konwersji
- id pojazdu nie moze byc autoincrement, i musze robic to
wlasnorecznie, czego sie troche boje ;-))) /aczkolwiek kiedys musi byc
ten pierwszy raz/
>Zakladam, ze edycje wartosci cech pojazdu przeprowadzisz tak, ze niemozliwym
>bedzie wprowadzenie cech niedopuszczalnych tzn dla pojazdu np treka nie
>mozna wprowadzac cech innych niz dopuszcza.
Jasna sprawa.
>Teraz pozostaje jeszcze tylko baza pojazdy (pola idpojazdu, wlasciciel, rok
>prod). Tu wlasnie mozesz dodac redundantnie typ pojazdu z bazy typow dla
>przyspieszenia dzialania (pola idpojazdu, wlasciciel, rok prod, idspojazdu)
>1, Józek, 1999
>2, Kasia, 1998
Ok, czyli wlasciwie tu mam zdefiniowane, czyj pojazd jest kogo. Tyle
ze w tym punkcie dochodzi nastepna wada:
- jeszcze wieksze rozdrobnienie niz pierwotnie
Doszedlem do sytuacji w zasadzie gorszej, bo musze spiac 3 tabele.
Przykladowo chcialbym uzyskac /posortowanego po wlasciecielu/ grida z
samochodami o kolumnach:
wlasciciel, marka samochodu, kolor, masa, i reszta cech samochodowych
Wlasciciela odsortuje, to jest latwe. Ale co z reszta?
No i teraz tak -- jesli mi podpowiesz tutaj z tym sortowaniem, to
jednoczesnie, nie obrazaj sie, w/w rozwiazanie bede uwazal za gorsze.
Bowiem tak jak Ty tu, tak jak u siebie zrobie sortowanie, bo typ
spinania jest taki sam, a baz-posrednikow jest mniej. Jednoczesnie nie
mam zadnych klopotow z konwersja i nie musze ingerowac w
autoincrement. Bazy sa mniejsze i struktura /ale to juz IMHO/ jest
prostsza.
Jak mi powiesz jak posortowac te spiete bazy w ramach np. jednego
grida, nie uzywajac SQLowego JOIN /bo tego sie wlasnie ucze/, to
dozgodnna wdziecznosc zapewniona ;-))) A jak sie spotkamy, to i piwo
naturalnie ;-)
milego dnia zycze
hej
PS. Jestem troche padniety, wiec sorry, jesli cos pominalem.
--
Maciej "MACiAS" Pilichowski http://www.torun.pdi.net/~macias/
nowe klamoty w marcu: pieniadze publiczne, W I R U S Happy99
S P R Z E D A M : oryginalne gry HalfLife i Thief, streamer Jumbo250,
lornetke z zoomem, segment CD Technics, przeciwsloneczne okulary sportowe
Technical Details
Message-ID:
<37074e65.5708883@rymunda.torun.pdi.net>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.astercity.net!news.torun.pdi.net!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.astercity.net!news.torun.pdi.net!not-for-mail From: macias@torun.pdi.net (Maciej "MACiAS" Pilichowski) Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Re: Bylo: podwojne filtrowanie -- przyklad [SQL] Date: Sat, 03 Apr 1999 09:23:49 GMT Organization: Publiczny Dostep Do Internetu o/Torun Lines: 108 Message-ID: <37074e65.5708883@rymunda.torun.pdi.net> References: <3707caae.3342053@rymunda.torun.pdi.net> NNTP-Posting-Host: pdi103.torun.pdi.net Mime-Version: 1.0 X-Newsreader: Forte Agent 1.5/32.452 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit