03. maj 2012 - 15:47Der er
10 kommentarer og 1 løsning
Udtræk fra MySQL returnere "forkerte" værdier
Hej,
Jeg forsøgte, at lægge nedenstående fejlkoder sammen hvor værdierne er = A - men da jeg fik nogle andre værdier end forventet, forsøgte jeg at trække værdierne ud for hver enkelt fejlkode for at få syn for sagen.
Når jeg kører nedenstående kode:
SELECT count(`fejl1`), count(`fejl2`), count(`fejl3`) FROM `data`
WHERE `fejl1`='A' OR `fejl2`='A' OR `fejl3`='A'
får jeg følgende resultater: fejl1= 98 fejl2= 15 fejl3= 39
Fejl1 er rigtig nok 98, men jeg ved at fejl2, fejl3 ikke har nogle værdier som er lig A - de har derimod værdier på hhv. 15 og 39 som er lig B i de 98 (af ca. 2000) rækker som bliver trukket ud.
Hvis jeg kører nedenstående udtræk: SELECT count(`fejl2`), count(`fejl3`) FROM `data`
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Hvis du vil have antal fejl1 hvor fejl1 = A og antal fejl2 hvor fejl2 = A og antal fejl3 hvor fejl3 = A, så virkede denne query hos mig med en testtabel jeg satte op i forbindelse med et tidliere spørgsmål:
SELECT DISTINCT (SELECT COUNT(fejlkode1) FROM data WHERE fejlkode1 = 'A') f1, (SELECT COUNT(fejlkode2) FROM killel WHERE fejlkode2 = 'A') f2, (SELECT COUNT(fejlkode3) FROM killel WHERE fejlkode3 = 'A') f3 FROM data
SELECT DISTINCT (SELECT COUNT(fejlkode1) FROM data WHERE fejlkode1 = 'A') f1, (SELECT COUNT(fejlkode2) FROM data WHERE fejlkode2 = 'A') f2, (SELECT COUNT(fejlkode3) FROM data WHERE fejlkode3 = 'A') f3, (SELECT f1+f2+f3) total FROM data
killel, jeg forstod fra dit oprindelige spørgsmål, at med den kode du viser får du ikke det rigtige antal fejl i henholdsvis fejl1, fejl2, og fejl3, hvor fejlen er A, og du søgte en løsning dertil. Sådan en løsning foreslog jeg, og du sagde, at det gav de rigtige data. Jeg forventede derfor, at du ville acceptere mit svar og afgive de udlovede points!
I stedet stillede du endnu et spørgsmål. Jeg forstod, at det nye spørgsmål gik ud på at lægge de tre værdier sammen. Så det foreslog jeg også en løsning på. Men ikke tilfredsstillende! Åbenbart havde jeg ikke fattet hvad du var ude efter, og i #4 fortæller du kun hvad der er forkert, ikke hvad du skulle have brugt i stedet for.
Jeg er åbenbart for dum til at forstå dig. For at jeg ikke skal spilde mere af din tid med forkerte svar foreslår jeg, at du lukker spørgsmålet igen med points til dig selv.
Du har fået dine point og jeg skal beklage mit spørgsmål kunne misforstås, selv om jeg når jeg selv læser det ikke er i tvivl om hvad der menes, men det er selvfølgelig også mig som har stillet det :)
Mit spørgsmål gik på hvordan jeg fandt summen af fejl1+fejl2+fejl3, men da jeg fik forkerte resultater forsøgte jeg at trække dataen ud enkeltvis for at finde fejlen.
Jamen så skal der vel ikke meget fantasi til at tage de elementer du har brug for og lade resten ligge -
SELECT DISTINCT (SELECT COUNT(fejl1) FROM data WHERE fejlkode1 = 'A') + (SELECT COUNT(fejl2) FROM data WHERE fejlkode2 = 'A') + (SELECT COUNT(fejl3) FROM data WHERE fejlkode3 = 'A') total FROM data
- meningen er vel, at det her skal være hjælp til selvhjælp.
Bestemt, jeg kunne bare ikke få det til at virke selv, men jeg kan se at det var noget med hvor ( ) skulle sættes. Det virker nu - endnu engang tak for hjælpen :)
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.