/ 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
Hjælp til indviklet SQL-forespørgsel
Fra : Steen Eiler Jørgense~


Dato : 18-04-03 15:03

Jeg har tænkt meget længe over denneher, og jeg kan simpelthen ikke greje,
hvordan det skal løses. Måske er det helt umuligt?

Jeg har en tabel i basen med artikler. Hver artikel har mulighed for
tilknytning af op til to forskellige forfattere. Der er separate felter til
angivelse af forfatternes for- og efternavne, så man kan sortere efter
efternavn. En typisk record ser for eksempel sådan ud:

TITEL FOR1FOR FOR1EFTER FOR2FOR FOR2EFTER
Titel Per Hansen Jens Jensen

Nu vil jeg gerne lave en liste over artikler ordnet alfabetisk efter
forfattere. Det vil så sige, at artiklen ovenfor skal figurere TO gange i
listen: både under "Hansen, Per" og "Jensen, Jens"

Jeg har prøvet mig frem med noget "GROUP BY"-halløj, men jeg kan sgutte få
det til at du.

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."




 
 
Jens Gyldenkærne Cla~ (18-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-04-03 15:35

Steen Eiler Jørgensen skrev:

> Jeg har en tabel i basen med artikler. Hver artikel har
> mulighed for tilknytning af op til to forskellige forfattere.
> Der er separate felter til angivelse af forfatternes for- og
> efternavne, så man kan sortere efter efternavn.

Nu er du forhåbentlig 110 % sikker på at der ikke kan være tre
forfattere til en enkelt artikel ;) Generelt er det ikke godt at
gemme den samme type oplysning (forfatternavnet) flere steder (i
hhv. forfatter1 og forfatter2). Men der kan selvfølgelig være
forskel på teori og praksis.

Hvis du vil have normaliseret din datastruktur skal du oprette en
tabel til forfatterne samt en tabel til at sammenkæde artikler og
forfattere. Så vil en artikel kunne have vilkårligt mange
forfattere - det kan så være en fordel eller en ulempe, alt efter
synsvinklen.

Dit spørgsmål kan dog sagtens løses uden at ændre strukturen - se
herunder.

> Nu vil jeg gerne lave en liste over artikler ordnet alfabetisk
> efter forfattere. Det vil så sige, at artiklen ovenfor skal
> figurere TO gange i listen: både under "Hansen, Per" og
> "Jensen, Jens"

Det kan også godt lade sig gøre. Du kan se på din tabel af to
omgange, én hvor du kigger på forfatter1 og en anden hvor du kigger
på forfatter2. De to forespørgsler kædes sammen med en UNION-
forespørgsel:

******************
   SELECT titel, for1for AS fornavn, for1efter AS efternavn
   FROM tblArtikler

   UNION

   SELECT titel, For2for, for2efter
   FROM tblArtikler

   ORDER BY efternavn, fornavn, titel
******************
   
Feltnavnene bestemmes af den første forespørgsel i UNION-
forespørgslen, og ORDER BY-klausulen går på det hele.


NB: Dit spørgsmål hører egentlig mere til i <news:dk.edb.database>.
--
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

Steen Eiler Jørgense~ (18-04-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 18-04-03 16:03

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote

> Nu er du forhåbentlig 110 % sikker på at der ikke kan være tre
> forfattere til en enkelt artikel ;) Generelt er det ikke godt at
> gemme den samme type oplysning (forfatternavnet) flere steder (i
> hhv. forfatter1 og forfatter2). Men der kan selvfølgelig være
> forskel på teori og praksis.

Jeg håber aldrig der kommer tre forfattere til en artikel!

> Hvis du vil have normaliseret din datastruktur skal du oprette en
> tabel til forfatterne samt en tabel til at sammenkæde artikler og
> forfattere. Så vil en artikel kunne have vilkårligt mange
> forfattere - det kan så være en fordel eller en ulempe, alt efter
> synsvinklen.

Ja, hvis det skal være helt rigtigt... Men det gider jeg ikke

> Det kan også godt lade sig gøre. Du kan se på din tabel af to
> omgange, én hvor du kigger på forfatter1 og en anden hvor du kigger
> på forfatter2. De to forespørgsler kædes sammen med en UNION-
> forespørgsel:

Jeg har prøvet din sql-sætning, og den virker! ...i hvert fald til sidst i
recordsettet. Først får jeg nemlig alle artiklerne ordnet (mere eller
mindre) alfabetisk efter titel, UDEN forfatternavne. Derefter kommer de
samme artikler så igen, blot ordnet efter forfatternavne. Har du en god
forklaring på det?

> NB: Dit spørgsmål hører egentlig mere til i <news:dk.edb.database>.

Okay - jeg var ikke sikker. Håber, det er OK at svare dig her. Ellers må du
futte den.

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



Jens Gyldenkærne Cla~ (18-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-04-03 20:51

Steen Eiler Jørgensen skrev:

> Jeg har prøvet din sql-sætning, og den virker! ...i hvert fald
> til sidst i recordsettet. Først får jeg nemlig alle artiklerne
> ordnet (mere eller mindre) alfabetisk efter titel, UDEN
> forfatternavne. Derefter kommer de samme artikler så igen,
> blot ordnet efter forfatternavne. Har du en god forklaring på
> det?

Ja, hvis du har artikler der kun har én forfatter vil de stadig
dukke op to gange i forespørgslen, én gang med den rigtige
forfatter og en gang uden en forfatter.

Du kan slippe for det problem ved at sætte kriterier på
forespørgslen (de skal sættes for begge delforespørgsler, selv om
det måske ikke er nødvendigt for den første).


>> NB: Dit spørgsmål hører egentlig mere til i
>> <news:dk.edb.database>.
>
> Okay - jeg var ikke sikker. Håber, det er OK at svare dig her.

Det er fint nok. Jeg overvejede en FUT, men undlod - dels fordi en
FUT ville give to halve tråde og dels fordi der er et vist overlap
mellem databasegrupperne og webdesign.serverside-grupperne.
--
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 : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste