|
| Hente fra flere tabeller Fra : Janko |
Dato : 12-03-03 18:45 |
|
Hej NG
Jeg har 3 tabeller:
Bundkort
Harddisk
Diskdrev
Hver tabel indeholder info samt en dato for hvornår de er oprettet. Kan jeg
udtrække de 5 seneste oprettede produkter ligegyldigt om der f.eks. er 2 fra
bundkort og 3 fra harddisk eller omvendt.
Tak
| |
Steen (12-03-2003)
| Kommentar Fra : Steen |
Dato : 12-03-03 18:50 |
|
Janko wrote in dk.edb.internet.webdesign.serverside.asp:
> Hej NG
>
> Jeg har 3 tabeller:
>
> Bundkort
> Harddisk
> Diskdrev
>
> Hver tabel indeholder info samt en dato for hvornår de er oprettet. Kan jeg
> udtrække de 5 seneste oprettede produkter ligegyldigt om der f.eks. er 2 fra
> bundkort og 3 fra harddisk eller omvendt.
>
Ja det ka` du roligt gøre
Steen
>
>
--
Danmarks største specialiserede IT jobdatabase
- Udelukkende med IT- og internetrelaterede jobs
- Opret en profil og lad drømmejobbet finde dig
KLIK HER! => http://www.html.dk/job
| |
Steen (12-03-2003)
| Kommentar Fra : Steen |
Dato : 12-03-03 19:01 |
|
Steen wrote in dk.edb.internet.webdesign.serverside.asp:
> Janko wrote in dk.edb.internet.webdesign.serverside.asp:
> > Hej NG
> >
> > Jeg har 3 tabeller:
> >
> > Bundkort
> > Harddisk
> > Diskdrev
> >
> > Hver tabel indeholder info samt en dato for hvornår de er oprettet. Kan jeg
> > udtrække de 5 seneste oprettede produkter ligegyldigt om der f.eks. er 2 fra
> > bundkort og 3 fra harddisk eller omvendt.
Du vil måske også vide hvordan ?
Prøv dette:
Sql = "SELECT TOP 5 * FROM datotabel ORDER BY Dato DESC"
Du kan gøre det enkelt ved også at indsætte datoen i tabellen "datotabel" sammen
med et id som refererer til data i dine andre tabeller.
Jeg ved ikke om du forstår hvad jeg mener, men det gør jeg ! !.
Steen
>
>
>
--
Danmarks største specialiserede IT jobdatabase
- Udelukkende med IT- og internetrelaterede jobs
- Opret en profil og lad drømmejobbet finde dig
KLIK HER! => http://www.html.dk/job
| |
Janko (12-03-2003)
| Kommentar Fra : Janko |
Dato : 12-03-03 19:07 |
|
> Du vil måske også vide hvordan ?
> Prøv dette:
> Sql = "SELECT TOP 5 * FROM datotabel ORDER BY Dato DESC"
> Du kan gøre det enkelt ved også at indsætte datoen i tabellen "datotabel"
sammen
> med et id som refererer til data i dine andre tabeller.
> Jeg ved ikke om du forstår hvad jeg mener, men det gør jeg ! !.
> Steen
Så skal jeg jo have en datotabel. Hvis du datoen ligger i alle tabeller kan
det så ikke lade sig gøre?
F.eks.
SELECT TOP 5 * FROM Bundkort, Harddisk ORDER BY Dato DESC
| |
Torben Brandt (12-03-2003)
| Kommentar Fra : Torben Brandt |
Dato : 12-03-03 21:36 |
|
Janko wrote:
> Jeg har 3 tabeller:
>
> Bundkort
> Harddisk
> Diskdrev
>
> Hver tabel indeholder info samt en dato for hvornår de er oprettet. Kan jeg
> udtrække de 5 seneste oprettede produkter ligegyldigt om der f.eks. er 2 fra
> bundkort og 3 fra harddisk eller omvendt.
Ja, hvis det er de samme kolonner du vil trække ud fra tabellerne.
Hvis det er kolonnerne
dato
produktnavn
pris
beskrivelse
så kunne du gøre noget i denne stil (utestet):
SELECT TOP 5
Alt.dato, Alt.produktnavn, Alt.pris, Alt.beskrivelse
FROM
(
(SELECT dato, produktnavn, pris, beskrivelse FROM Bundkort)
UNION
(SELECT dato, produktnavn, pris, beskrivelse FROM Harddisk)
UNION
(SELECT dato, produktnavn, pris, beskrivelse FROM Diskdrev)
) AS Alt
ORDER BY Alt.dato DESC
M.a.o. vi opretter først en tabel (kaldet Alt) der indeholder alle de
poster vi er interesseret i. Derefter sorterer vi og tager de nyeste ud.
De er vigtigt at kolonnerne er de samme i de tre oprindelige tabeller
fordi ellers "passer" de ikke ind i den fælles tabel Alt.
Jeg mener dog at din datastruktur ikke er helt optimal. I stedet burde
du kun have én tabel. Og hvis du vil gruppere produkterne i kategorier,
så kunne du tilføje en kategori-kolonne, som kunne have værdierne
Bundkort, Harddisk, Diskdrev
mvh Torben
| |
Jørn Andersen (13-03-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 13-03-03 03:40 |
|
On Wed, 12 Mar 2003 21:35:48 +0100, Torben Brandt <torben@actuar.dk>
wrote:
>Jeg mener dog at din datastruktur ikke er helt optimal. I stedet burde
>du kun have én tabel.
Det lyder rimeligt.
>Og hvis du vil gruppere produkterne i kategorier,
>så kunne du tilføje en kategori-kolonne, som kunne have værdierne
>Bundkort, Harddisk, Diskdrev
Men her ville det måske være smartere med en separat kategori-tabel.
Mvh.
--
Jørn Andersen,
Brønshøj
| |
Janko (13-03-2003)
| Kommentar Fra : Janko |
Dato : 13-03-03 09:50 |
|
>Jeg mener dog at din datastruktur ikke er helt optimal. I stedet burde
>du kun have én tabel. Og hvis du vil gruppere produkterne i kategorier,
>så kunne du tilføje en kategori-kolonne, som kunne have værdierne
>Bundkort, Harddisk, Diskdrev
Tak. Nu ved jeg godt dette ikke er en systemudviklings ng, men håber
alligevel på et svar
Jeg er ved at opbygge et site der minder om edbpriser.dk til en
eksamensopgave. Mit spørgsmål er så:
Kan man samle nedenstående tabeller i en tabel? I parenteser ses de
specielle attributter for de enkelte produkter, som kun vedrører dem. Fælles
for dem alle er at de har et produkt, mærke, model mm.
Bundkort (attributter f.eks. socket, fsb)
Harddisk (attributter f.eks. kapacitet, interface)
Diskdrev (ingen specielle attributter)
Hvis de skulle samles i en tabel, kunne det f.eks. være en Hardware tabel.
Hardware (attributter produkt, mærke, model, socket, fsb, Kapacitet,
interface)
Derefter skiller jeg f.eks produkt ud i en selvstændig tabel indeholdende
(harddisk, bundkort, diskdrev)
Men resulterer det ikke i at hvis jeg opretter et bundkort så er der
kolonner i hardware som ikke bliver udfyldt og gør det noget?
Håber i gider
Tak
J
| |
Torben Brandt (13-03-2003)
| Kommentar Fra : Torben Brandt |
Dato : 13-03-03 15:05 |
|
Janko wrote:
>>Jeg mener dog at din datastruktur ikke er helt optimal. I stedet burde
>>du kun have én tabel. Og hvis du vil gruppere produkterne i kategorier,
>>så kunne du tilføje en kategori-kolonne, som kunne have værdierne
>>Bundkort, Harddisk, Diskdrev
>
> Kan man samle nedenstående tabeller i en tabel? I parenteser ses de
> specielle attributter for de enkelte produkter, som kun vedrører dem. Fælles
> for dem alle er at de har et produkt, mærke, model mm.
>
> Bundkort (attributter f.eks. socket, fsb)
> Harddisk (attributter f.eks. kapacitet, interface)
> Diskdrev (ingen specielle attributter)
>
> Hvis de skulle samles i en tabel, kunne det f.eks. være en Hardware tabel.
>
> Hardware (attributter produkt, mærke, model, socket, fsb, Kapacitet,
> interface)
>
> Derefter skiller jeg f.eks produkt ud i en selvstændig tabel indeholdende
> (harddisk, bundkort, diskdrev)
>
> Men resulterer det ikke i at hvis jeg opretter et bundkort så er der
> kolonner i hardware som ikke bliver udfyldt og gør det noget?
Jeg vil prøve at give et bud, men der kan altid være faldgruber, når man
ikke kender projektet 100%.
Ud fra dit første indlæg antog jeg, at tabellerne indeholdt de samme
felter, men den gik ikke :)
Problemet med din struktur er bare, hvis der er 20 varekategorier, så
skal du have 19 UNION's i din SQL-streng...
Jeg er helt enig i, at NULL-værdier ikke er en god idé! Det skal man
undgå. I stedet kunne man tage de felter, der er ens i to eller flere
tabeller og flytte dem til en anden tabel, som man så refererer til.
Du kunne have en tabel, der hed Produkt, som indeholdt de fælles felter
Pris, PåLager, Vægt (hvis du sælger pr postordre) osv.
Der skal også være et unikt id-nummer (primær nøgle, autonummerering).
Så beholder du tabellerne for hver varekategori, hvis felterne alligevel
er forskellige.
Ud over de felter, der er specifikke for varekategorien, så skal hvert
produkt også have en refererence til det id-nummer, hvor prisen o.a. kan
findes i tabellen Produkt.
Jeg kan ikke lige finde på en situation, hvor du også skal bruge en
reference fra en pris i Produkt-tabellen til en nærmere beskrivelse af
den i fx tabellen Bundkort, men hvis du skal kunne gå den vej, så kan du
bare lave en reference den vej.
Prøv at overvej at gøre det på den måde - eller en anden :) men når du
så synes det hele ser pænt ud, så skal man lige huske at gøre som Jørn
rettede mig til:
Se efter om der er mere, der kan generaliseres. I stedet for at jeg
havde kategori-navnet i alle posterne, så skulle der bare være et
id-nummer til en Kategori-tabel, der indeholder kategoriernes id-numre,
deres navn, kategoriens farvetema, osv.
mvh Torben
| |
Jørn Andersen (14-03-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 14-03-03 00:13 |
|
On Thu, 13 Mar 2003 09:50:28 +0100, "Janko" <j@j.j> wrote:
>Jeg er ved at opbygge et site der minder om edbpriser.dk til en
>eksamensopgave. Mit spørgsmål er så:
>
>Kan man samle nedenstående tabeller i en tabel? I parenteser ses de
>specielle attributter for de enkelte produkter, som kun vedrører dem. Fælles
>for dem alle er at de har et produkt, mærke, model mm.
>
>Bundkort (attributter f.eks. socket, fsb)
>Harddisk (attributter f.eks. kapacitet, interface)
>Diskdrev (ingen specielle attributter)
>
>Hvis de skulle samles i en tabel, kunne det f.eks. være en Hardware tabel.
<snip>
>Men resulterer det ikke i at hvis jeg opretter et bundkort så er der
>kolonner i hardware som ikke bliver udfyldt og gør det noget?
Du kunne jo navngive fælles-felterne som det de hedder:
produkt, mærke, model, pris etc.
- og så navngive resten som:
attrib01, attrib02, attrib03, attrib04 etc.
Det vil selvfølgelig betyde, at du så skal have en separat tabel eller
måske blot et array til attrib-dekodning for hver enkelt produkt-type.
Til gengæld kan du sikkert spare at have en alt for kompleks
tabel-struktur.
Blot mit bud ...
Good luck!
--
Jørn Andersen,
Brønshøj
| |
|
|