Avatar billede benner Nybegynder
11. januar 2002 - 11:42 Der er 2 kommentarer og
2 løsninger

Finde manglende spørgeskemaer

Hej
Jeg har en MS SQL2k-server med 6 tabeller, alle tabeller kædes sammen via ID-felt. Den første (LBNR) indeholder en komplet liste over personer som har modtaget de forskellige spørgeskemaer. De øvrige tabeller (SPG1-5) indeholder de returnerede svar fra de 5 forskellige spørgeskemaer.
Det jeg mangler er en SQL-sætning som kan returnere en liste over personer som har returneret min. 1 skema, men mangler at returner min. 1 skema, samt oplysninger om hvilket skemar der er besvarede/ikke besvarede?
Avatar billede proaccess Nybegynder
11. januar 2002 - 11:52 #1
Skal du mon ikke i retning af:

SELECT LBNR.*, Not(SPG1.ID = Null) AS Retur1, Not(SPG2.ID = Null) AS Retur2, Not(SPG3.ID = Null) AS Retur3, Not(SPG4.ID = Null) AS Retur4, Not(SPG5.ID = Null) AS Retur5 FROM LBNR LEFT JOIN SPG1 ON LBNR.PersonID=SPG1.ID LEFT JOIN SPG2 ON LBNR.PersonID=SPG2.ID osv...
Avatar billede benner Nybegynder
11. januar 2002 - 12:19 #2
Jeg får desvære følgende fejl-meddelse:
Incorrect syntax near the keyword \'Not\'

Jeg har også forsøgt at ændre \'= Null\' til \'IS Null\', men det hjælper heller ikke.
Avatar billede proaccess Nybegynder
11. januar 2002 - 12:59 #3
Det var bare teoretisk fremgangsmåde jeg PRØVEDE at anvise... ;-(

\'---------------------

NYT FORSØG:
Har hver person i LBNR et ID-nummer, som bruges i tabellerne SPG1-5?

- kan man i bekræftende fald ikke:
CREATE VIEW Svar(ID LONG, Spg LONG) AS
SELECT ID, 1 FROM SPG1
UNION SELECT ID, 2 FROM SPG2
UNION SELECT ID, 3 FROM SPG3
UNION SELECT ID, 4 FROM SPG4
UNION SELECT ID, 5 FROM SPG5;

SELECT LBNR.*, COUNT(Svar.Spg) AS Antal FROM LBNR INNER JOIN Svar ON LBNR.ID=Svar.ID;



Ellers må jeg vist melde pas...

Avatar billede benner Nybegynder
11. januar 2002 - 13:13 #4
Jeg har fundet svaret selv ud fra dit første forsøg, dette her virker:
SELECT
LBNR.ID,
SPG1.ID AS SPG1,
SPG2.ID AS SPG2,
SPG3.ID AS SPG3,
SPG4.ID AS SPG4,
SPG5.ID AS SPG5
FROM
LBNR
LEFT OUTER JOIN SPG1
ON LBNR.ID = SPG1.ID
LEFT OUTER JOIN SPG2
ON LBNR.ID = SPG2.ID
LEFT OUTER JOIN SPG3
ON LBNR.ID = SPG3.ID
LEFT OUTER JOIN SPG4
ON LBNR.ID = SPG4.ID
LEFT OUTER JOIN SPG5
ON LBNR.ID = SPG5.ID
WHERE
((SPG1.ID IS NULL) OR
  (SPG2.ID IS NULL) OR
  (SPG3.ID IS NULL) OR
  (SPG4.ID IS NULL) OR
  (SPG5.ID IS NULL))
and
not ((SPG1.ID IS NULL) and
  (SPG2.ID IS NULL) and
  (SPG3.ID IS NULL) and
  (SPG4.ID IS NULL) and
  (SPG5.ID IS NULL))

Tak for hjælpen.
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