Toon posts:

[MySQL] met left join sorteren......

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag alles sorteren waar totalpictures groter is dan 0, nu heb ik deze query

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
    *,
    count(gallerypicdb.pic_id) as totalpictures
FROM
    gallerydb
LEFT JOIN
    gallerypicdb
ON
    gallerypicdb.gallery_id = gallerydb.id
GROUP BY
    gallerydb.id
ORDER BY
    date DESC, totalpictures DESC
WHERE
    totalpictures>0


maar krijg ik een error

ik was al op FOK begonnen omdat ik een lief mailtje had gekregen van Cheata, dus voor vorige berichten kijk hier

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Neem gewoon de SQL manual of tutorial er even bij.

Als je wilt filteren op gegroepeerde gegevens, doe je dat niet met een where clausule, maar met een having clausule.
code:
1
2
3
4
5
6
SELECT [columns]
FROM [tables]
WHERE [filter]
GROUP BY [....]
HAVING [...]
ORDER BY [...]


(Trouwens sorteren != filteren)

Lees in het vervolg ook even de P&W Quickstart.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 04 oktober 2002 @ 09:05:
Neem gewoon de SQL manual of tutorial er even bij.

Als je wilt filteren op gegroepeerde gegevens, doe je dat niet met een where clausule, maar met een having clausule.
code:
1
2
3
4
5
6
SELECT [columns]
FROM [tables]
WHERE [filter]
GROUP BY [....]
HAVING [...]
ORDER BY [...]


(Trouwens sorteren != filteren)

Lees in het vervolg ook even de P&W Quickstart.
:*, ik had um gelezen maar denk dat ik over de 'having' heen heb gelezen :'(
sorry... maar tnx!!! :) ik houd deze in mijn hoofd! :)

[ Voor 0% gewijzigd door Verwijderd op 04-10-2002 09:07 . Reden: heen ]


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT
                gallerydb.random_id,
                gallerydb.subname,
                gallerydb.user_id,
                gallerydb.public,
                userdb.username,
                count(gallerypicdb.pic_id) as totalpictures
            FROM
                gallerydb
            LEFT JOIN
                userdb
            ON
                userdb.id = gallerydb.user_id
            LEFT JOIN
                gallerypicdb
            ON
                gallerypicdb.gallery_id = gallerydb.id
            GROUP BY
                gallerydb.id
            HAVING
                gallerydb.public='0'
            ORDER BY
                rand()
             LIMIT 0, 10


Whoami, kan je me mischien uitleggen waarom dit dan niet werkt? :D

error

code:
1
Unknown column 'gallerydb.public' in 'having clause'


8)7 dom dom dom, moest ook nog die regel bij select adden :)

[ Voor 0% gewijzigd door Verwijderd op 04-10-2002 09:47 . Reden: group by vergeten :( ]


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Als je GROUP BY gebruikt, wil dat nog niet zeggen, dat je geen WHERE meer kunt gebruiken. (zie eerste post Whoami).
En het veld gallerydb.public moet je nu juist weer in de WHERE zetten.
Als je trouwens vindt dat totalpictures groter dan nul moet zijn, dan kun je de LEFT JOIN op gallerypicdb beter vervangen door een gewone JOIN.

Never underestimate the power of


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Een having doe je op een aggregated column, in jouw geval is dat totalpictures.

Maar misschien kun je eens naar de tip van camedeoski kijken. Als je idd enkel resultaten wil waar totalpictures > 0 moet zijn, dan gebruik je best een gewone join ipv een left join. Dat zal zeker een prestatie-winst opleveren.

https://fgheysels.github.io/


Verwijderd

Topicstarter
cameodski schreef op 04 oktober 2002 @ 10:14:
Als je GROUP BY gebruikt, wil dat nog niet zeggen, dat je geen WHERE meer kunt gebruiken. (zie eerste post Whoami).
En het veld gallerydb.public moet je nu juist weer in de WHERE zetten.
Als je trouwens vindt dat totalpictures groter dan nul moet zijn, dan kun je de LEFT JOIN op gallerypicdb beter vervangen door een gewone JOIN.
zou je eens kunnen uitleggen wat de echte verschillen tussen de joins zijn, zodat ik ze dus ook beter kan gebruiken (*implementeren?*) want van de doc op mysql.com snap ik echter niets.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Exact expert nodig?

Pagina: 1