Avatar billede zurekk Nybegynder
19. januar 2008 - 15:36 Der er 8 kommentarer og
1 løsning

Omskrivning af forespørgsel

Hej Eksperter,

Jeg har denne forespørgsel som jeg godt kunne tænke mig skrevet lidt simplere:

SELECT     *
FROM (
SELECT         _Indhold.*, MAX(_Comments.date) AS SenesteKommentar, _users.username
FROM         _Indhold
LEFT JOIN     _Comments
ON             _Indhold.id=_Comments.cid
LEFT JOIN    _users
ON            _users.id = _Indhold.uid
WHERE         _Indhold.sid=" . $sid . "
AND         _Indhold.type='thread'
GROUP BY     _Indhold.id
) AS tmp
ORDER BY     COALESCE(SenesteKommentar, date) DESC


Den den gør er at hive rækker fra _Indhold ud, og sorterer dem efter sidste kommentar(_Comments).
Hvis ingen kommentarer er skrevet, bliver den så sorteret efter tilføjelses dato(_Indhold.date).

Det jeg havde håbet på var at kunne få fjernet min inline forespørgsel (...) AS tmp.

Er det muligt?

På forhånd tak!
Avatar billede arne_v Ekspert
19. januar 2008 - 15:50 #1
Hvorfor kan du ikke bare lave din indre select med den ydres order by ?
Avatar billede zurekk Nybegynder
19. januar 2008 - 16:01 #2
Jeg får denne fejl:
#1247 - Reference 'SenesteKommentar' not supported (reference to group function)

Når jeg fjerner:
SELECT    *
FROM (

og:
) AS tmp
Avatar billede arne_v Ekspert
19. januar 2008 - 16:24 #3
Kan du bruge:

ORDER BY    COALESCE(MAX(_Comments.date), date) DESC

?
Avatar billede zurekk Nybegynder
19. januar 2008 - 16:33 #4
Det virker, men den sorterer forkert.
Aner faktisk ikke hvad den sorterer efter =/
Det virker lidt random.
Avatar billede zurekk Nybegynder
19. januar 2008 - 19:27 #5
Ingen forslag?
Avatar billede kjulius Novice
20. januar 2008 - 00:52 #6
Måske ORDER BY COALESCE(MAX(_Comments.date), _Indhold.date)?
Avatar billede arne_v Ekspert
20. januar 2008 - 02:59 #7
Jeg er løbet tør for gode ideer.
Avatar billede zurekk Nybegynder
20. januar 2008 - 11:46 #8
kjulius, ja det var også hvad jeg gjorde :D
Uden "_Indhold" opstår en fejl.
Avatar billede zurekk Nybegynder
20. januar 2008 - 20:16 #9
Jeg lukker bare :)

Tak for hjælpen.
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