26. januar 2003 - 14:16Der er
8 kommentarer og 1 løsning
SQL
Jeg har en SQL steng som ser sådan ud (der arbejdes udelukkende i tabellen answers):
SELECT libraryNum FROM answers WHERE questionNum = ".$row["questionNum"]." AND answer = $x AND NOT (questionNum = 75 AND answer = 1)
Det der drilller er den sidste parantes. Jeg vil gerne have alle libraryNum's som ikke indeholder questionNum 75 OG answer 1. Men kan jeg overhovedet gøre det på denne måde?
Overvejer om det er muligt at lave en SELECT-statement mere, som eksplicit går ind og hiver fat i det enkelte libraryNum og tjekker om det opfylder kriterierne. Ved blot ikke hvordan syntaksen så kommer til at se ud?
Problemet er ikke syntaks. MySQL kan satens tygge den igennem. Problemet er semantisk. Den gør ikke det den burde gøre.
Jeg vil gerne have den til at vælge de rækker for et givent spørgsmål ($row["questionNum"]) som indeholder et bestemt svar $x. Rækken skal dog ikke tælles med, hvis der er svaret ja (answer = 1) til spørgsmål 75 (questionNum = 75). SQL-strengen bliver benyttet i en løkke, som kører samtlige svarmuligheder for en række spørgsmål igennem.
SELECT libraryNum FROM answers WHERE questionNum = ".$row["questionNum"]." AND answer = $x AND libraryNum NOT IN (SELECT libraryNum FROM answers WHERE questionNum = 75 AND answer = 1)
SELECT libraryNum FROM answers WHERE questionNum = ".$row["questionNum"]." AND answer = $x AND libraryNum NOT EXISTS (SELECT * FROM answers answers2 as WHERE questionNum = 75 AND answer = 1 AND answers.libraryNum = answers2.libraryNum)
Sorry forsinkeltes, havde helt glemt svaret.... Fik løst problemet med INNER JOIN i stedet for - men du skal have point for din konstruktive kritik...
Synes godt om
Ny brugerNybegynder
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.