Avatar billede webster Nybegynder
29. juni 2001 - 23:05 Der er 2 kommentarer

Besværlig Select sql Query

Hejsa

jeg har siddet de sidste par timer og bøvlet med en sql query jeg simpelthen ikke kan få til at virke. De tabeller jeg arbejder med behandler nogle meget abstakte begreber, så jeg har tilladt mig at lave et mere håndgribeligt eksempel med samme problemstilling:

Vi har 3 tabeller: Software, Skribenter, Artikler.

- Tabellen Software indeholder nogle generelle informationer om et object i dette tilfælde noget software. Den kan altså fx have felterne SoftwareID, Navn, Beskrivelse.

- Tabellen Skribenter indeholder også generelle oplysninger fx SkribentID, Navn, Adresse.

- Tabellen Artikler fungere som led i oprettelsen af en en-til-mange relation. Den indeholder altså informationer om en række artikler. Hver artikel kommer fra en bestemt skribent, og handler om en bestemt software. Der kan altså være koblet flere artikler til en software, OG der kan godt være flere artikler fra en skribent. Tabellen kunne fx indeholde felterne ArtikelID, Navn, Indhold.

//Break
Det jeg vil er at få returneret et recordset indeholdende en post for hver af de skribenter der har skrevet en artikel til et program. Hver post skal fx indeholde Skribenter.Navn, Artikler.Navn, Artikler.Beskrivelse. Så hvis skribenten Hans ikke har skrevet nogen beskrivelser til fx programmet med ProgramID = 2 så skal han ikke komme med i recordsettet. Har han derimod skrevet 2 artikler, skal der kun returneres en post med den 1 artikel database serveren støder på.

Jeg skal altså havde lavet noget join eller udvidet select. Jeg har arbejdet lidt med distinct for at forhindre at der kunne blive returneret mere end en post for hver skribent, men har ikke fået det til at lykkes. Håber at der er nogen der kan hjælpe ud fra det her, eller kan jeg uddybe (den her vandvittigt lange tekst) med nogle diagrammer. Jeg vil også gerne sætte pointtallet op hvis det hjælper.

Det bør nævnes at jeg har en Ms Sql server (7.0) stående, så forslag er ikke begrænset til de queries der kan laves på en Access DB. Jeg er også hamrende ligeglad med om der bruges stored procedures, jeg vil bare havde det til at virke :-)

På forhånd tak
Avatar billede tknudsen Nybegynder
02. juli 2001 - 06:27 #1
bruger du ikke nærmere tabellen Artikler til at opretten en mange-til-mange relation imellem de to andre tabeller ?

og er det forstået rigtigt at du så vil søge efter skribenter der har skrevet om et bestemt stykke software ? og altså er ligeglad med hvor mange artikler den enkelte skribent har skrevet - så længe skribenten har skrevet bare een artikel skal skribenten med i resultat sættet ?
Avatar billede webster Nybegynder
02. juli 2001 - 13:19 #2
delvist ja. Lad os forstille os at vi i tabellen software har en post kaldet Windows 2000. I tabellen Skribenter er der 3 poster: Hans, Peter, Flemming. Hans har skrevet 1 artikel relateret til win2 softwaren, peter 2 og flemming 0. Det jeg vil ende ud med i det her tilfælde er et recordsæt indeholdende: Skribenter.Navn, Artikler.Navn og Artikler.Beskrivelse. I det her eksempel ville mit recordset så skulle indeholde 2 poster. 1 post indeholdende navnet Hans, og hans artikel om software, samt 1 post med (skribent) navnet Peter, og hans ene artikel. Hvilken af peters artikler der bliver valgt er sådan set ligemeget, det vigtige er at der ikke kan opstå 2 artikler fra samme skribent. Systemet er lavet sådan at der ikke skulle kunne forekomme 2 artikler om 1 software (kringlet) fra samme skribent, men jeg vil gerne være på den sikre side.


Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB