24. januar 2005 - 00:11Der er
9 kommentarer og 1 løsning
COUNT i tabel?
Hej Eksperter!
Er ved at lave en lille statusside, som viser hvordan nogle backup'er er gået. Den lister efter hvor mange dage i træk, backup'en IKKE er OK.
Er kørt lidt fast i mit SQL-statement.
Jeg har to felter i samme tabel (ZipOK og DatoOpr). Jeg laver en COUNT på ZipOK, ZipOK kan indeholde: 0 = OK backup, -100 = Backup ikke modtaget og -200 = Fejl i backup.
Problemet er nu, at jeg kun vil have vist dage i træk hvor backup'en er = -100 / -200, dvs. DatoOpr må ikke være større på ZipOK=0, end ZipOK=-100/-200.
Håber forklaringen er OK.
Lige nu ser min SQL sådan ud:
strQuery = "SELECT ADBackLog.Nr, ADBackLog.DatoOpr, ADBackLog.ZipOK AS Fejl, COUNT(ADBackLog.ZipOK) AS Count, ADBackup.Navn, ADBackup.Aktiv FROM ADBackLog, ADBackup WHERE ADBackup.Aktiv=1 AND ADBackLog.Nr=ADBackup.NR AND ADBackLog.ZipOK<0 GROUP BY ADBackLog.NR ORDER BY Count DESC"
Som jeg tolker dit spørgsmål, så ønsker du kun at vise fejl, siden sidste gang backup'en var OK.
Hvis det er rigtigt, burde du kunne klare det ved at udvide din WHERE med følgende subselect:
WHERE ... AND ADBackLog.DatoOpr > (SELECT MAX(ADBackLog.DatoOpr) FROM ADBacklog bl WHERE bl.Aktiv = ADBackLog.Aktiv AND bl.Nr = ADBackup.NR AND bl.Zip >= 0)
kjulius: Får følgende fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e09' [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(ADBackLog.DatoOpr) FROM ADBacklog bl WHERE bl.Aktiv
Nu ser min SQL sådan ud: strQuery = "SELECT ADBackLog.Nr, ADBackLog.DatoOpr, ADBackLog.ZipOK AS Fejl, COUNT(ADBackLog.ZipOK) AS Count, ADBackup.Navn, ADBackup.Aktiv FROM ADBackLog, ADBackup WHERE ADBackup.Aktiv=1 AND ADBackLog.Nr=ADBackup.NR AND ADBackLog.ZipOK<0 AND ADBackLog.DatoOpr > (SELECT MAX(ADBackLog.DatoOpr) FROM ADBacklog bl WHERE bl.Aktiv = ADBackLog.Aktiv AND bl.Nr = ADBackup.NR AND bl.Zip >= 0) GROUP BY ADBackLog.NR ORDER BY Count DESC"
Oops, ja jeg ser fejlen. Når jeg i subselecten giver tabellen ADBacklog aliaset bl, skal MAX(ADBacklog.DatoOpr) naturligvis også ændres til MAX(bl.DatoOpr).
Herefter ser den sådan ud:
strQuery = "SELECT ADBackLog.Nr, ADBackLog.DatoOpr, ADBackLog.ZipOK AS Fejl, COUNT(ADBackLog.ZipOK) AS Count, ADBackup.Navn, ADBackup.Aktiv FROM ADBackLog, ADBackup WHERE ADBackup.Aktiv=1 AND ADBackLog.Nr=ADBackup.NR AND ADBackLog.ZipOK<0 AND ADBackLog.DatoOpr > (SELECT MAX(bl.DatoOpr) FROM ADBacklog bl WHERE bl.Aktiv = ADBackLog.Aktiv AND bl.Nr = ADBackup.NR AND bl.Zip >= 0) GROUP BY ADBackLog.NR ORDER BY Count DESC"
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.