🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#90
From: Maciej "MACiAS" Pilichowski
Date: Sat, 03 Apr 1999 09:23
108 lines
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-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.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