Avatar billede Goose Juniormester
16. juni 2020 - 12:24 Der 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 :-(
Avatar billede tjp Mester
16. juni 2020 - 13:57 #1
Har du prøvet at fjerne ' fra 'TBL_kursus_tilmelding.kursusdag' ?
Avatar billede Goose Juniormester
16. juni 2020 - 14:46 #2
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 :(
Avatar billede Goose Juniormester
16. juni 2020 - 14:49 #3
Det virker fint hvis jeg bruger:

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

- men det tager bare en krig at eksekverer
Avatar billede tjp Mester
16. juni 2020 - 16:04 #4
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..
Avatar billede Goose Juniormester
16. juni 2020 - 16:10 #5
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 :-)
Avatar billede Goose Juniormester
16. juni 2020 - 17:12 #6
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
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