21. november 2009 - 17:10Der er
19 kommentarer og 1 løsning
Hjælp til søgning
Er der nogen der ved hvordan man modificerer denne søgning så den tæller op hvor mange der er >= 2, >=5, >=15 år:
SELECT alder, COUNT(alder) AS antal FROM erfaring WHERE user = '$_SESSION[user]' AND alder != '' AND funktion = IFNULL($funktion,funktion) GROUP BY alder
SELECT alder, COUNT(alder) AS antal FROM erfaring WHERE user = '$_SESSION[user]' AND alder != '' AND funktion = IFNULL($funktion,funktion) GROUP BY alder HVING alder >=15
SELECT CASE WHEN alder < 2 THEN '0-1' CASE 2 <= alder AND alder < 5 THEN '2-4' CASE 5 <= alder AND alder < 15 THEN '5-14' ELSE '15-' END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring WHERE user = '$_SESSION[user]' AND alder != '' AND funktion = IFNULL($funktion,funktion) GROUP BY CASE WHEN alder < 2 THEN '0-1' CASE 2 <= alder AND alder < 5 THEN '2-4' CASE 5 <= alder AND alder < 15 THEN '5-14' ELSE '15-' END
#1064 - 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 'CASE 2 <= alder AND alder < 5 THEN '2-4' CASE 5 <= alder AND alder < 15 THEN '5-' at line 1
SELECT CASE WHEN alder < 2 THEN '0-1' WHEN 2 <= alder AND alder < 5 THEN '2-4' WHEN 5 <= alder AND alder < 15 THEN '5-14' ELSE '15-' END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring WHERE user = '$_SESSION[user]' AND alder != '' AND funktion = IFNULL($funktion,funktion) GROUP BY CASE WHEN alder < 2 THEN '0-1' WHEN 2 <= alder AND alder < 5 THEN '2-4' WHEN 5 <= alder AND alder < 15 THEN '5-14' ELSE '15-' END
Ja, nu begynder det at ligne noget. Der er bare det problem at jeg faktisk gerne vil tælle op hvor mange der er <= 2, <=5, <=15 år (byttede rundt på > og < i mit oprindelige spørgsmål). Det vil sige at der er gengangere i grupperne. Det kan man vist ikke have med den søgning du har lavet, eller hvad? Har prøvet med nedenstående, og der kommer man eksempelvis ikke med i gruppen <=5 hvis man allerede er kommet i <=2. Nogen ideer til hvordan man kan løse det problem?
SELECT CASE WHEN alder <= 2 THEN 2 WHEN alder <= 5 THEN 5 WHEN alder <= 15 THEN 15 END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring GROUP BY CASE WHEN alder <= 2 THEN 2 WHEN alder <= 5 THEN 5 WHEN alder <= 15 THEN 15 END ORDER BY aldersgruppe
Nu har jeg prøvet at lave søgningen med UNION. Jeg får det rigtige resultat for aldersgruppen, men jeg får stadig antallet af rækker der ikke passer på min betingelse (fx WHEN alder <= 5 THEN 5), hvis du forstår hvad jeg mener. Du kan se resultatet af en søgning her:
SELECT CASE WHEN alder <= 2 THEN 2 END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring GROUP BY CASE WHEN alder <= 2 THEN 2 END UNION SELECT CASE WHEN alder <= 5 THEN 5 END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring GROUP BY CASE WHEN alder <= 5 THEN 5 END UNION SELECT CASE WHEN alder <= 15 THEN 15 END AS aldersgruppe, COUNT(alder) AS antal FROM erfaring GROUP BY CASE WHEN alder <= 15 THEN 15 END
SELECT '<=2',COUNT(*) FROM erfaring WHERE alder <= 2 UNION SELECT '<=5',COUNT(*) FROM erfaring WHERE alder <= 5 UNION SELECT '<=15',COUNT(*) FROM erfaring WHERE alder <= 15
hcthorsen, hvis "det spiller," saa var tiden maaske inde til at lukke spoergsmaalet. Det giver god orden at lukke spoergsmaal der ikke laengere er aabne og saa staar det ikke laengere som aabent paa min liste af indlaeg. Yderligee synes jeg at du skylder at give points (ikke til mig, for jeg havde misforstaaet spoergsmaalet.)
Øh, ja jeg mangler at afgive point. Derfor har jeg bedt arne_v om at sende et svar. Jeg har ikke lukket spørgsmålet fordi han ikke har sendt et svar endnu. jeg giver ham lige en chance for at melde sig på banen.
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.