15. juni 2004 - 09:39Der er
12 kommentarer og 1 løsning
Count tæller forkert, men hvorfor?
Hej
Jeg har denne sætning, men jeg får den viser 1 for meget:
Select Count(*) as antal, t_counter.id, t_counter.titel from t_counter LEFT JOIN t_counterdata ON t_counter.id=t_counterdata.counterid group by id order by titel
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
t_counterdata id counterid ( ref til t_counter.id )
Det jeg skal bruge er titel fra t_counter + hvor mange hits der er på den counter fra t_counterdata
Synes godt om
Slettet bruger
19. juni 2004 - 21:50#2
Hvis du bare skal bruge titel og hits, kan du ikke nøjedes med:
-------------------- SELECT Count(*) AS antal, t_counter.titel FROM t_counter LEFT JOIN t_counterdata ON t_counter.id=t_counterdata.counterid GROUP BY t_counter.id ORDER BY titel; --------------------
Har prøvet, og den viser stadigvæk 1 hit på de 2 titel'er som ikke har noget i t_counterdata.
Har løst problemet med dette her: Select Count(*) as antal, t_counter.id, t_counter.titel, t_counterdata.counterid from t_counter LEFT JOIN t_counterdata ON t_counter.id=t_counterdata.counterid group by id order by titel også checker jeg på om t_counterdata.counterid er større end 0
Synes godt om
Slettet bruger
19. juni 2004 - 22:44#4
ok, prøv med:
--------------- SELECT Count(*) AS antal, t_counter.id, t_counter.titel FROM t_counter, t_counterdata WHERE t_counter.id=t_counterdata.counterid GROUP BY id ORDER BY titel; ---------------
Den burde kun tælle hits på de t_counter.id der også forekommer i t_counterdata.
ja det gør den også, men mit problem er at jeg skal have en fuld liste af alle titel'er i t_counter og så deres hit. Med den SQL sætning får jeg kun dem som har et hit.
Synes godt om
Slettet bruger
21. juni 2004 - 19:52#6
Gider du smide noget test data op ? Bare et 5-6 rækker fra hver tabel.
Jeg har også sat et ekstra felt på som hedder firma, så det skulle også være muligt at sætte en where firma='navn' på. Vil godt give flere point hvis det er.
Synes godt om
Slettet bruger
22. juni 2004 - 22:41#9
Prøv med denne her:
------------------------ SELECT titel, IF(counterid <> 'NULL', COUNT(*), 0) as hits FROM t_counter LEFT JOIN t_counterdata ON t_counter.id = t_counterdata.counterid GROUP BY titel ORDER BY t_counter.id; ------------------------
Men hvis nu jeg laver et felt der hedder t_counter.firma, hvordan laver jeg så det samme men med where firma='firmanavn1'
Så jeg kun får en liste over dem som firmanavn1 har lavet? Kan godt give flere point, hvis det er. :)
Synes godt om
Slettet bruger
23. juni 2004 - 08:51#11
Jeg har ikke lige mulighed for at teste det før iaften, men prøv med:
------------------------ SELECT titel, IF(counterid <> 'NULL', COUNT(*), 0) as hits FROM t_counter LEFT JOIN t_counterdata ON t_counter.id = t_counterdata.counterid WHERE t_counter.firma = 'firmanavn1' GROUP BY titel ORDER BY t_counter.id; ------------------------
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.