Avatar billede xbol Nybegynder
05. november 2003 - 08:29 Der er 11 kommentarer og
1 løsning

Query visning af problemer med kun nej i Action.

Jeg har en tabel over problemer.
Disse problemer følges der op på i en tabel der hedder followup. Der kan være et uendeligt antal opfølgninger på et problem. Disse opfølgninger vil ende med en konklusion ja/Nej på om problemet er løst. Dato/tid for opfølgningerne er registreret.
I en Query vil jeg gerne kun vise de problemer hvor den sidste opfølgning er med konklusionen Ja.
Dvs. at hvis den sidste opfølgnings konklusion er Nej skal problemet ikke medtages i queryen.
Avatar billede mlhave Nybegynder
05. november 2003 - 11:02 #1
Problem
  ProblemNr    Autonumber
  ProblemNavn  Text

Followup
  FolloeupNr    Autonumber
  Tekst        Text
  Loest        Yes/No
  ProblemNrRef  Number

SELECT Folluwup.ProblemNrRef, Problem.Problembeskrivelse, Folluwup.Løst
FROM Problem INNER JOIN Folluwup ON Problem.ProblemNr = Folluwup.ProblemNrRef
WHERE (((Folluwup.Løst)=Yes));
Avatar billede mlhave Nybegynder
05. november 2003 - 11:06 #2
Jeg antager at du har to tabeller med en en-til-mange sammenhæng. Jeg har vist tabellerne med deres datatyper ud for kolonnenavnene.
Jeg har ikke vist dato/tid, men det er blot ekstra kolonner i tabellen Followup, som jeg ser det - du kan selv tilføje dem i forespørgslen.
Avatar billede xbol Nybegynder
05. november 2003 - 11:33 #3
Denne løsning frasorterer ikke de Problemer hvor den sidst indtastede Followup er Løst med et No i visningen. Så vidt jeg kan se viser den alle followup med Yes.
Det er med at frasortere de problemer hvor den sidst indtastede opfølgning er resulteret i No der er det vanskelige.
Her er min SQL code.
SELECT [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE(((FOLLOWUP.OUTSTANDING)=Yes))
ORDER BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE;
Avatar billede terry Ekspert
05. november 2003 - 17:25 #4
If you can send your dB then I will take a look

NOSPAMeksperten@santhell.dkNOSPAM

you need to remove NOSPAM
Avatar billede nih Novice
05. november 2003 - 18:42 #5
Du kan bruge en underforesp:

SELECT *
FROM problem
WHERE problemId
Not In (SELECT problem.problemId
          FROM problem,folowup
          WHERE (problem.problemId = folowup.problemid) AND ( løst=Yes));

Niels
Avatar billede xbol Nybegynder
05. november 2003 - 22:01 #6
Hej nih. Det virkede. Nu mangler jeg bare at det kun er den sidst indtastede followup der vises i min Query.
Som det er nu får jeg alle opfølgninger på finding vist under hinanden.

SELECT [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (((FINDINGS.FOLLOWUP) Not In (SELECT FOLLOWUP.FOLLOWUP FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB WHERE (FINDINGS.FOLLOWUP =  FOLLOWUP.FOLLOWUP) AND (FOLLOWUP.OUTSTANDING=No))))
ORDER BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FOLLOWUP.FOLLOWUP;
Avatar billede nih Novice
05. november 2003 - 22:18 #7
Så skal du grupere på max dato

SELECT problem.problemId, problem.tekst, Max(folowup.dato) AS MaksOfdato
FROM problem INNER JOIN folowup ON problem.problemId = folowup.problemid
WHERE (((problem.problemId) Not In
        (SELECT problem.problemId
          FROM problem,folowup WHERE
        (problem.problemId = folowup.problemid) AND ( løst=Yes))))
GROUP BY problem.problemId, problem.tekst;

Jeg kan ikke helt gennemskue din tabel struktur, så jeg viser princippet vha mlhave's tabeller

Niels
Avatar billede nih Novice
05. november 2003 - 22:24 #8
SELECT [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION,  Max(FOLLOWUP.TIME) as makstid
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (((FINDINGS.FOLLOWUP) Not In (SELECT FOLLOWUP.FOLLOWUP FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB WHERE (FINDINGS.FOLLOWUP =  FOLLOWUP.FOLLOWUP) AND (FOLLOWUP.OUTSTANDING=No))))
GROUP BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION
ORDER BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FOLLOWUP.FOLLOWUP;

Et sku i tågen :)
Avatar billede xbol Nybegynder
05. november 2003 - 22:49 #9
Hej nih. Det er det samme som før. Kan du se hvad jeg gør forkert?
SELECT [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION, Max(FOLLOWUP.TIME) AS MaksOfTIME
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (((FINDINGS.FOLLOWUP) Not In (SELECT FOLLOWUP.FOLLOWUP
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (FINDINGS.FOLLOWUP =  FOLLOWUP.FOLLOWUP) AND (FOLLOWUP.OUTSTANDING=No))) AND ((SHUTDOWN.[SDA NAME]) Like "DAE*") AND ((FOLLOWUP.ACTION)="OFF"))
GROUP BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS, FOLLOWUP.FOLLOWUP, FINDINGS.TYPE, FOLLOWUP.USER, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME], FOLLOWUP.DESCR, FOLLOWUP.OUTSTANDING, FOLLOWUP.ACTION
ORDER BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FOLLOWUP.FOLLOWUP;
Avatar billede nih Novice
05. november 2003 - 23:00 #10
folowuptabel har den et autonummer felt ??
Avatar billede nih Novice
05. november 2003 - 23:06 #11
Så skal du nemlig finde max autonummerfelt i folowup tabellen OG fjerne de andre felter fra foresp.

Herefter laver du en ny foresp. der er bygger den vi lige har lavet og din folowtabel hvor du kan vise alle felterne.
Avatar billede nih Novice
05. november 2003 - 23:08 #12
SELECT [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS,  FINDINGS.TYPE, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME], Max(FOLLOWUP.id) AS MaksOfid
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (((FINDINGS.FOLLOWUP) Not In (SELECT FOLLOWUP.FOLLOWUP
FROM SHUTDOWN INNER JOIN (([CE DIAGRAM] INNER JOIN FINDINGS ON [CE DIAGRAM].CE = FINDINGS.CE) INNER JOIN FOLLOWUP ON FINDINGS.FOLLOWUP = FOLLOWUP.FOLLOWUP) ON SHUTDOWN.RP_JOB = FINDINGS.RP_JOB
WHERE (FINDINGS.FOLLOWUP =  FOLLOWUP.FOLLOWUP) AND (FOLLOWUP.OUTSTANDING=No))) AND ((SHUTDOWN.[SDA NAME]) Like "DAE*") AND ((FOLLOWUP.ACTION)="OFF"))
GROUP BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FINDINGS.TAGNO, FINDINGS.REMARKS,  FINDINGS.TYPE, FOLLOWUP.TIME, SHUTDOWN.[SDA NAME]
ORDER BY [CE DIAGRAM].[CE DIAGRAM], FINDINGS.CE_LINE, FOLLOWUP.FOLLOWUP;
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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