Avatar billede kristiankogut Nybegynder
07. marts 2011 - 17:53 Der er 9 kommentarer og
1 løsning

count bolean

Hej.. Jeg skal have en status af antallet svar ud fra hvert spørgsmål

SELECT `65586X3X13e3`,`65586X3X13e2`,`65586X3X13e1` FROM `lime_survey_65586`

Jeg vil gerne vide hvormange "Y"'er der er under hhv. 65586X3X13e3`,`65586X3X13e2`,`65586X3X13e1`

Jeg kan kun finde ud af Count() med tal
07. marts 2011 - 19:00 #1
Jeg gaar ud fra at tabellen lime_survey_65586 indeholder (mindst) tre kolonner med datatype BOOL og at vaerdierne i felterne er enten TRUE (eller 1) eller FALSE (ELLER 0).

Jeg kan ikke se hvordan du i en enkelt query kan taelle indholdet af tre forskellige kolonner.  Du maa stille tre queries:

SELECT COUNT(*) FROM lime_survey_65586 WHERE 65586X3X13e3 = true;
SELECT COUNT(*) FROM lime_survey_65586 WHERE 65586X3X13e2 = true;
SELECT COUNT(*) FROM lime_survey_65586 WHERE 65586X3X13e1 = true;

(Men maaske er der nogen der er klogere end jeg.)
Avatar billede arne_v Ekspert
08. marts 2011 - 02:43 #2
UNION var ret oplagt.

Skal det absolut være kan man jo prøve:

SELECT SUM(IF(65586X3X13e3,1,0)),SUM(IF(65586X3X13e2,1,0)),SUM(IF(65586X3X13e1,1,0)) FROM lime_survey_65586

eller

SELECT COUNT(NULLIF(65586X3X13e3,true)),COUNT(NULLIF(65586X3X13e2,true)),COUNT(NULLIF(65586X3X13e1,true)) FROM lime_survey_65586
08. marts 2011 - 07:01 #3
arne_v, det er ikke mit spoergsmaal, men tak for tipsene.
11. marts 2011 - 07:42 #4
kristiankogut, hvordan kommer vi nu videre med dette spoergsmaal?  Du fik en god loesning paa det stillede problem (min loesning var ikke optimal) saa det logiske naeste skridt maa vel vaere at bede den der kom med loesningen om at oprette et svar som du saa accepterer.  Saa er spoergsmaalet lukket og staar ikke laengere som aabent i min og andres liste af indlaeg.
Avatar billede kristiankogut Nybegynder
13. marts 2011 - 09:05 #5
Den løsning jeg søgte fik jeg alligevel sammensat...
Den er som følger

SELECT surveyls_title As varehus, Count(*) - 1 AS gennemfoert,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e1`='Y') AS Driftsenhed,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e2`='Y') AS Salgsenhed,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e3`='Y') AS Serviceenhed
        FROM`lime_survey_".$skema."`,  `lime_surveys_languagesettings` WHERE surveyls_survey_id  = '65586'

Tak for løsnings forslagene.
Avatar billede kristiankogut Nybegynder
13. marts 2011 - 09:06 #6
smid nogle svar begge to, som tak for hjælp.
13. marts 2011 - 10:12 #7
Jeg passer - min foreslaaede loesning var ikke optimal - points skulle gaa til det andet medlem.
Avatar billede arne_v Ekspert
13. marts 2011 - 15:47 #8
Jeg kan godt lægge et svar.

Jeg forslår slet ikke SQL'en i #15. Det er Christians 3 SQL sætninger sammen med en fjerde SELECT om har nogle WHERE betingelser ikke brugt i de første 3.
Avatar billede kristiankogut Nybegynder
13. marts 2011 - 18:53 #9
Hej arne igen. Det er fordi eg i lime_surveys_lan... gerne vil bruge surveyls_title istedet for surveyls_survey_id.



SELECT surveyls_title As varehus, Count(*) - 1 AS gennemfoert,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e1`='Y') AS Driftsenhed,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e2`='Y') AS Salgsenhed,
        (SELECT Count(*) FROM`lime_survey_65586` WHERE`65586X3X13e3`='Y') AS Serviceenhed
        FROM`lime_survey_68586`,  `lime_surveys_languagesettings` WHERE surveyls_survey_id  = '65586'

Er det at forstå nu. Jeg har desuden erstattet ".$skema." med det rigtige.. det var lige en rest fra php
15. marts 2011 - 19:07 #10
kristiankogut, du siger at det problem der fik dig til at oprette spoergsmaalet loest!  Yderligere har du faaet svar som du bad om.  Saa er tiden ikke inde til at lukke spoergsmaalet?  Saa er der 'ryddet op.'  (Hvis loesningen virker for dig goer det vel egenligt mindre til sagen om den kan gennemskues af andre.)
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

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