16. juni 2020 - 12:24Der er
5 kommentarer og 1 løsning
dato spørgsmål
Jeg har en select som blandt andet indeholder
SELECT TBL_kursus_tilmelding.id, COALESCE(donedag1, 0) AS donedag1
FROM TBL_kursus_tilmelding
LEFT JOIN (SELECT kursusid, COUNT(*) AS donedag1 FROM TBL_kursustilmelding_order WHERE dag1 = 'checked' AND dag1dato <> 'TBL_kursus_tilmelding.kursusdag' GROUP BY TBL_kursustilmelding_order.kursusid) donedag1 ON donedag1.kursusid = TBL_kursus_tilmelding.id
Udfordringen er, at jeg får ikke den korrekte sammentælling. Udskifter jeg TBL_kursus_tilmelding.kursusdag med en konkret dato, altså f.eks. 2020-06-10, så får jeg den korrekte sammentælling.
Jeg har prøvet alverdens ting med date_format og alle datoer ligger som date i databasen.
Jeg kan simpelthen ikke gennemskue hvorfor jeg ikke kan få det til at virke :-(
ja det har jeg, men så får jeg blot følgende fejl: Unknown column 'TBL_kursus_tilmelding.kursusdag' in 'where clause'
og det hælper heller ikke at sætte den ind i min select SELECT TBL_kursus_tilmelding.id, TBL_kursus_tilmelding.kursusdag, COALESCE(donedag1, 0) AS donedag1
Men kan godt se det er der den halter, jeg kan bare ikke gennemskue hvordan jeg får count til at virke når den skal baseres på oplysning fra en anden tabel :(
SELECT TBL_kursus_tilmelding.id, TBL_kursus_tilmelding.kursusdag, COUNT(DISTINCT TBL_kursustilmelding_order_1.id) AS donedag1
FROM TBL_kursus_tilmelding
LEFT JOIN TBL_kursustilmelding_order TBL_kursustilmelding_order_1 ON TBL_kursustilmelding_order_1.kursusid = TBL_kursus_tilmelding.id AND TBL_kursustilmelding_order_1.dag1 = 'checked' AND TBL_kursustilmelding_order_1.dag1dato <> TBL_kursus_tilmelding.kursusdag
Problemet er at din indlejrede SELECT i LEFT JOIN i dit spørgsmål ikke kan se tabellen TBL_kursus_tilmelding. Du bliver nødt til at tage tabellen med i den indlejredes FROM-clause..
Det lyder fornuftigt, mener du dermed jeg skal have endnu en join i den select? Jeg er sg* ikke så skarp ud i det her, men prøver efter bedste beskub :-)
Det ser ud til at virke på den her måde - ikke sikker på den er optimal, men den virker :)
LEFT JOIN (SELECT kursusid, COUNT(*) AS donedag1 FROM TBL_kursustilmelding_order WHERE dag1dato <> (select kursusdag from TBL_kursus_tilmelding where id=TBL_kursustilmelding_order.kursusid) AND dag1 = 'checked' GROUP BY TBL_kursustilmelding_order.kursusid) donedag1 ON donedag1.kursusid = TBL_kursus_tilmelding.id
Synes godt om
1 synes godt om dette
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.