Avatar billede duper Nybegynder
01. august 2004 - 20:18 Der er 7 kommentarer og
1 løsning

SQL fejlen ved flere kriterier i WHERE

Hej E!

Jeg har et lille problem med denne SQL.
Hvis jeg nøjes med et kriterie i WHERE klausulen virker det fint, men når flere kriterier skal opfyles får jeg intet output (selvom jeg burde).

Jeg ønsker altså at finde personerne som både er noteret for id_sprogomraader 1 og 4.

SQL:
SELECT DISTINCT id, navn FROM stamdata JOIN sprogrelation ON stamdata.id=sprogrelation.id_stamdata WHERE sprogrelation.id_sprogomraader='1' AND sprogrelation.id_sprogomraader='4'

Jeg bruger MySQL, hvis det skulle have nogen betydning.

VH
Sune
Avatar billede lap Nybegynder
01. august 2004 - 20:30 #1
hvordan kan et felt (sprogrelation.id_sprogomraader) både have værdien 1 og 4 - mon ikke du mener "OR"
Avatar billede lap Nybegynder
01. august 2004 - 20:35 #2
sikke noget vrøvl at skrive.... :-)
Avatar billede thedeathart Nybegynder
01. august 2004 - 20:38 #3
prøv at skrive hvilken fejlmeddelse du får, det vil gøre det nemmere at debugge
Avatar billede duper Nybegynder
01. august 2004 - 20:41 #4
Hvis jeg bruger OR får jeg alle dem der har 1 eller 4, jeg skal bruge dem der både har 1 og 4.

sprogrelation er en m-n relation, så den samme person kan findes flere gange i tabellen med forskellige værdier tilknyttet.
f.eks.
stamdata.id|id_sprogomraader
1|1
1|4
2|2

I dette eksempel burde jeg få id_stamdata '1' som output.

NB: "SELECT id, navn" er fra stamdata, altså stamdata.id, stamdata.navn
Avatar billede duper Nybegynder
01. august 2004 - 20:44 #5
Jeg får ingen fejlmeddelse, men bare et tomt output. Har kontrolleret i selve databasen at der findes nogle som både er registreret under værdien 1 og 4.
Avatar billede arne_v Ekspert
01. august 2004 - 21:22 #6
Prøv:

SELECT id,navn
FROM stamdata,sprogrelation sr1,sprogrelation sr2
WHERE stamdata.id=sr1.id_stamdata AND sr1.id_sprogområder='1' AND
      stamdata.id=sr2.id_stamdata AND sr2.id_sprogområder='4'
Avatar billede duper Nybegynder
02. august 2004 - 00:41 #7
Fik følgende til at virke:
SELECT DISTINCT stamdata.id, stamdata.navn
FROM stamdata
JOIN sprogrelation sr1 ON stamdata.id = sr1.id_stamdata
JOIN sprogrelation sr2 ON stamdata.id = sr2.id_stamdata
WHERE sr1.id_sprogomraader = '1' AND sr2.id_sprogomraader = '4'

Smider du et et svar arne_v?

Takker alle for hjælpen :0)
Avatar billede arne_v Ekspert
02. august 2004 - 06:47 #8
svar
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
Computerworld tilbyder specialiserede kurser i database-management

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