/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL-problem.
Fra : Thomas Voller


Dato : 22-03-03 16:20

Jeg har to tabeller i min Acces 2002 DB

--- tblLink ---
CategoryID (tal) - Referer til tblKategorier.CategoryID.
Link (tekst).

--- tblKategorier ---
CategoryID (autonummering) - Unik ID.
Navn (tekst) - Navet på kategorien.

Det, der er tanken er at jeg vil lave et kategorisystem til de links jeg
bruger på hjemmeside. På den side jeg arbejder på nu vil jeg trække alle
links ud og sortere dem efter kategori. Meeen... Jeg har lidt problemer med
at lave et SQL-statement der kan gøre netop det. Siden vil jeg gerne have
til at se ud i denne stil.

Navn på kategori 1.
- Link 1 i denne kategori
- Link 2 i denne kategori.
....

Navn på kategori 2.
- Link 1 i denne kategori
- Link 2 i denne kategori.
- Link 3 i denne kategori.
....

Links uden for kategori.
- Link 1 uden for kategori
- Link 2 uden for kategori
- Link 3 uden for kategori
....

Selve ASP'en med at udskrive data fra recordsættet kan jeg nok bikse sammen,
det er mere SQL-statementet der joiner de to tabeller, der giver problemer.

Kan nogen hjælpe?



Mvh. Voller.



 
 
Jens Gyldenkærne Cla~ (22-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-03-03 21:01

Thomas Voller skrev:

> --- tblLink ---
> CategoryID (tal) - Referer til tblKategorier.CategoryID.
> Link (tekst).
>
> --- tblKategorier ---
> CategoryID (autonummering) - Unik ID.
> Navn (tekst) - Navet på kategorien.

SELECT k.CategoryID, k.Navn, l.Link
FROM tblKategorier k INNER JOIN tblLink l
ON k.CategoryID = l.CategoryID
ORDER BY k.CategoryID

> Selve ASP'en med at udskrive data fra recordsættet kan jeg nok
> bikse sammen, det er mere SQL-statementet der joiner de to
> tabeller, der giver problemer.

Du skal bruge en ganske almindelig INNER JOIN. Asp-koden skal så
håndtere at kategorinavnet kun udskrives en gang pr. kategori.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (22-03-2003)
Kommentar
Fra : Ukendt


Dato : 22-03-03 22:13


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns9346D5B5EE2E4jcdmfdk@gyrosmod.cybercity.dk...

> SELECT k.CategoryID, k.Navn, l.Link
> FROM tblKategorier k INNER JOIN tblLink l
> ON k.CategoryID = l.CategoryID
> ORDER BY k.CategoryID

Har du eller andre et godt link til en side der beskriver hvordan JOINS
virker og hvad de bruges til? En forklaring her ville da heller ikke være ad
vejen hvis det ikke er uoverskueligt at begynde med?
--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk ICQ: 25308942
" If something's hard to do, then it's not worth doing. Homer J. Simpson"



Jens Gyldenkærne Cla~ (22-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-03-03 22:42

Christian M. Nielsen skrev:

> Har du eller andre et godt link til en side der beskriver
> hvordan JOINS virker og hvad de bruges til?

Ikke umiddelbart (men Google har mange hits på "sql join
tutorial").

En bog (evt. blot et hæfte) om databaser kan være en god hjælp her.
Jeg har selv haft glæde af Joakim Dalbys "Databasehåndbogen" der
grundigt og pædagogisk beskriver fundamentale databaseprincipper.

> En forklaring her ville da heller ikke være ad vejen hvis det
> ikke er uoverskueligt at begynde med?

Ganske kort. Et JOIN bruges til at samle data fra flere tabeller.
Det absolut mest almindelige er et INNER JOIN. Det viser data fra
to tabeller hvor joinkriteriet er opfyldt i dem begge. Eksempel:

   SELECT *
   FROM varer INNER JOIN varegrupper
   ON varer.varegruppeID = varegrupper.varegruppeID

Et forespørgsel med INNER JOIN kan også skrives alene ved hjælp af
WHERE. Ovenstående eksempel kan for eksempel skrives således:

   SELECT *
   FROM varer, varegrupper
   WHERE varer.varegruppeID = varegrupper.varegruppeID

Ud fra det sidste eksempel kan man måske se hvordan den almindelige
JOIN-syntaks er bygget op.

Har man brug for at få alle rækkerne fra den ene tabel med kan det
også gøres med et join. Det kaldes så OUTER JOIN - og findes i
varianterne LEFT, RIGHT og FULL. Et LEFT OUTER JOIN (el. bare LEFT
JOIN) vil medtage alle rækker fra den førstnævnte tabel (på venstre
side af operatoren) og parre dem med tilsvarende rækker fra
højresiden hvis de findes, ellers blot med null-værdier. RIGHT
OUTER JOIN tager tilsvarende alle værdier fra højresiden og fylder
ud med null-værdier på venstresiden. Endelig vil en FULL OUTER JOIN
lave udfyldning med null på begge sider.

Af hensyn til oversigten vil jeg kort nævne at der også findes en
såkaldt CROSS JOIN. Det er nu ikke rigtig en join, i det der ikke
er noget joinkriterium. CROSS JOIN svarer til det kartesiske
produkt af to tabeller - det vil sige alle mulige kombinationer af
rækkerne fra tabel 1 og tabel 2. Det er også det samme som at
skrive flere tabelnavne op (adskilt af komma) uden at angive anden
sammenhæng. CROSS JOIN har sjældent nogen praktisk anvendelse.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste