Kære udviklere,
Det er ikke så længe siden at jeg har postet et indlæg som jeg selv løste. Men der er flere problemer i det.
Jeg har denne database struktur:
likes
-----
likes_id
likes_photos_id
likes_fid
likes_like
likes_dislike
likes_sendt_dato
photos
------
photos_id
photos_url
photos_fid
users
-----
users_id
users_fid
users_oprettet
Med denne SQL:
- SELECT *, (
- SUM(
- likes.likes_like
- )
- -
- SUM(
- likes.likes_dislike
- )
- ) as sum_likes
- FROM photos
- INNER JOIN users
- ON photos.photos_fid = users.users_fid
- LEFT JOIN likes
- ON likes.likes_photos_id = photos.photos_id
- GROUP BY users_id
- ORDER BY sum_likes DESC
..vil jeg gerne kunne sortere efter udregningen af "likes" minus "dislikes". Det fungerer også helt fint med overstående SQL. Men problemet er, at nogle billeder er der ikke blevet "stemt på". Det vil sige at udregningen af disse billeder skal være lig med 0 (nul). Men de er (naturligvis) tomme, men bliver stadig trukket ind. Det er også helt fint. Men jeg vil gerne have at igennem SQL'en får de tildelt værdien 0 (nul) hvis de er tomme, da de bliver smidt nederst i rækken over resultater.
Eksempelvis får jeg dette output:
Bruger 7 : 6
Bruger 2 : 4
Bruger 9 : 1
Bruger 3 : 0
Bruger 1 : 0
Bruger 11 : -1
Bruger 8 : -1
Bruger 13 : -2
Bruger 4 :
Ved
Bruger 4 står der ikke noget. Der skulle stå 0 (nul), og blive smidt op imellem
Bruger 9 og
Bruger 11, og hvor der er to med værdi 0 (nul).
Hvordan kan jeg gøre dette?
Indlæg senest redigeret d. 22.08.2012 11:55 af Bruger #16025