Avatar billede humanoid Nybegynder
30. maj 2007 - 13:19 Der er 5 kommentarer og
1 løsning

Brug af kommasep. liste i IN() function

Hvorfor får jeg kun resultatet for den første værdi i FaultGroup:

FaultGroup = "1,2,3,4,5"

SELECT SUM(rawdata.TimeFailure) AS faulttime, SUM(rawdata.CntFailure) AS failure
FROM rawdata
WHERE rawdata.DataPointIndex IN(SELECT FaultGroup FROM faultgroup WHERE ID = 1) AND sTimeStamp BETWEEN '2007-05-30 10:00:00' AND '2007-05-30 11:00:00' GROUP BY rawdata.DataPointIndex ORDER BY faulttime DESC

Er der en måde man kan konvertere strengen FaultGroup, så den bliver en del af query´et ?
Avatar billede barklund Nybegynder
30. maj 2007 - 13:26 #1
Det er for det første dårlig brug af database, at have en kommasepararet liste i et felt, hvis du skal kunne slå op i det. Det er faktisk lige omkring direkte tåbeligt :)

Derudover vil du kunne gøre det med noget regexp:

SELECT SUM(rawdata.TimeFailure) AS faulttime, SUM(rawdata.CntFailure) AS failure
FROM rawdata
WHERE (SELECT FaultGroup FROM faultgroup WHERE ID = 1) RLIKE CONCAT('(^|,)',rawdata.DataPointIndex,'($|,)') AND sTimeStamp BETWEEN '2007-05-30 10:00:00' AND '2007-05-30 11:00:00' GROUP BY rawdata.DataPointIndex ORDER BY faulttime DESC

Ja, det er noget rod, men sådan går det, når man har lavet noget rod :)

--
Morten Barklund
Avatar billede humanoid Nybegynder
30. maj 2007 - 13:38 #2
Det eneste jeg bruger listen til er at fortælle mig en række fejlpunkter, jeg skal bruge, jeg skal ikke søge eller gøre noget som helst ved listen. Så om det er noget rod det ved jeg ikke.

Jeg prøver lige dit eksempel.
Avatar billede humanoid Nybegynder
30. maj 2007 - 13:40 #3
Grunden til jeg spørger, er fordi jeg lige nu bruger det når jeg generere kaldet fra en website, hvor det virker ganske fint, men jeg kan åbentbart ikke smide listen i en variabel i en procedure og bruge det.
Avatar billede humanoid Nybegynder
30. maj 2007 - 13:44 #4
Det virker ganske fint. Tak for hjælpen. drop lige et svar !
Avatar billede barklund Nybegynder
30. maj 2007 - 14:01 #5
Hvis du har behov for at lave ovenstående query, så *har* du brug for at søge i listen - og så *er* det noget rod.

Men jeg lægger et svar.
Avatar billede humanoid Nybegynder
30. maj 2007 - 14:05 #6
Tak for det
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Senior Test Manager

Udviklings- og Forenklingsstyrelsen

Rådgivende it-arkitekter med stærke samarbejdsevner

Cognizant Technology Solutions Denmark ApS

Test Manager