Likes Likes:  0
Resultaten 1 tot 5 van de 5
Geen
  1. #1
    Rick
    [SQL] Join; count = 0 teruggeven
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [SQL] Join; count = 0 teruggeven

    Ik zit er al een tijdje op te puzzelen, maar het wil niet vlotten. Het
    gaat om twee tables uit een mysql db. De ene table is users en de andere
    is posts (om het voorbeeld maar tastbaar te maken ). Nu wil ik tellen
    (via een COUNT()) hoe vaak er een post van een user voorkomt in de
    posttable. Echter als een user nog geen post heeft geplaatst, wil ik dat
    deze wel terugkomt in mijn result, maar dan met het totaal 0. Momenteel
    lukt het mij alleen om een result terug te krijgen voor de users die
    gepost hebben. Iemand enig idee hoe ik deze query moet opbouwen?

  2. #2
    Rene Pijlman
    [SQL] Join; count = 0 teruggeven
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [SQL] Join; count = 0 teruggeven

    Rick:
    >Ik zit er al een tijdje op te puzzelen, maar het wil niet vlotten. Het
    >gaat om twee tables uit een mysql db. De ene table is users en de andere
    >is posts (om het voorbeeld maar tastbaar te maken ). Nu wil ik tellen
    >(via een COUNT()) hoe vaak er een post van een user voorkomt in de
    >posttable. Echter als een user nog geen post heeft geplaatst, wil ik dat
    >deze wel terugkomt in mijn result, maar dan met het totaal 0. Momenteel
    >lukt het mij alleen om een result terug te krijgen voor de users die
    >gepost hebben. Iemand enig idee hoe ik deze query moet opbouwen?


    Ff uit mijn hoofd, met een echte database zou ik een outer join maken,
    zodat de users zonder posts wel in het resultaat verschijnen, maar met
    null's in de post-kolommen. Dan zou het met een group by op de user id en
    een count op een post-kolom moeten lukken.

    Maar iets zegt me dat Mysql op het gebied van de (outer) joins, null's,
    group by's en counts zoveel tekortkomingen heeft dat het feest niet
    doorgaat.

    --
    René Pijlman

    Wat wil jij leren? http://www.leren.nl

  3. #3
    Ronald Klip
    [SQL] Join; count = 0 teruggeven
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [SQL] Join; count = 0 teruggeven

    Rene Pijlman schreef:
    > Rick:
    > >Ik zit er al een tijdje op te puzzelen, maar het wil niet vlotten. Het
    > >gaat om twee tables uit een mysql db. De ene table is users en de andere
    > >is posts (om het voorbeeld maar tastbaar te maken ). Nu wil ik tellen
    > >(via een COUNT()) hoe vaak er een post van een user voorkomt in de
    > >posttable. Echter als een user nog geen post heeft geplaatst, wil ik dat
    > >deze wel terugkomt in mijn result, maar dan met het totaal 0. Momenteel
    > >lukt het mij alleen om een result terug te krijgen voor de users die
    > >gepost hebben. Iemand enig idee hoe ik deze query moet opbouwen?

    >
    > Ff uit mijn hoofd, met een echte database zou ik een outer join maken,
    > zodat de users zonder posts wel in het resultaat verschijnen, maar met
    > null's in de post-kolommen. Dan zou het met een group by op de user id en
    > een count op een post-kolom moeten lukken.
    >
    > Maar iets zegt me dat Mysql op het gebied van de (outer) joins, null's,
    > group by's en counts zoveel tekortkomingen heeft dat het feest niet
    > doorgaat.


    Dat valt reuze mee.
    OP, je vraag wordt beantwoord in de manual:
    http://dev.mysql.com/doc/mysql/en/JOIN.html

    --
    groet, Ronald

  4. #4
    bram
    [SQL] Join; count = 0 teruggeven
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [SQL] Join; count = 0 teruggeven



    Rick wrote:
    > Ik zit er al een tijdje op te puzzelen, maar het wil niet vlotten. Het
    > gaat om twee tables uit een mysql db. De ene table is users en de andere
    > is posts (om het voorbeeld maar tastbaar te maken ). Nu wil ik tellen
    > (via een COUNT()) hoe vaak er een post van een user voorkomt in de
    > posttable. Echter als een user nog geen post heeft geplaatst, wil ik dat
    > deze wel terugkomt in mijn result, maar dan met het totaal 0. Momenteel
    > lukt het mij alleen om een result terug te krijgen voor de users die
    > gepost hebben. Iemand enig idee hoe ik deze query moet opbouwen?


    SELECT username, IF(ISNULL(count(p.userid)),0,count(p.posts)) FROM
    usertable u LEFT JOIN posttable p ON u.userid=p.userid

    zoiets in ieder geval. Bij een normale join worden er als er geen
    resultaten zijn, dat niet getoond. Bij een left join worden er NULLS
    toegevoegd als er geen resultaten zijn die voldoen.

    SYNTAX: Table1 LEFT JOIN Table2 ON expression

    IF(ISNULL(count(p.userid)),0,count(p.posts)) dit maakt van NULLS nullen.


  5. #5
    Michiel de Roo
    [SQL] Join; count = 0 teruggeven
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [SQL] Join; count = 0 teruggeven

    bram wrote:
    >
    >
    > Rick wrote:
    >
    >> Ik zit er al een tijdje op te puzzelen, maar het wil niet vlotten. Het
    >> gaat om twee tables uit een mysql db. De ene table is users en de
    >> andere is posts (om het voorbeeld maar tastbaar te maken ). Nu wil
    >> ik tellen (via een COUNT()) hoe vaak er een post van een user voorkomt
    >> in de posttable. Echter als een user nog geen post heeft geplaatst,
    >> wil ik dat deze wel terugkomt in mijn result, maar dan met het totaal
    >> 0. Momenteel lukt het mij alleen om een result terug te krijgen voor
    >> de users die gepost hebben. Iemand enig idee hoe ik deze query moet
    >> opbouwen?

    >
    >
    > SELECT username, IF(ISNULL(count(p.userid)),0,count(p.posts)) FROM
    > usertable u LEFT JOIN posttable p ON u.userid=p.userid
    >
    > zoiets in ieder geval. Bij een normale join worden er als er geen
    > resultaten zijn, dat niet getoond. Bij een left join worden er NULLS
    > toegevoegd als er geen resultaten zijn die voldoen.
    >
    > SYNTAX: Table1 LEFT JOIN Table2 ON expression
    >
    > IF(ISNULL(count(p.userid)),0,count(p.posts)) dit maakt van NULLS nullen.
    >


    Prachtige query !

    Maar nog beter is 'IF(ISNULL(count(p.userid)),0,count(p.posts)) as cnt' of
    zoiets, anders is het moeilijk uitlezen :-)

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics