On Mon, 05 Mar 2007 12:08:34 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:
>Jeg er generelt en stor tilhænger af eksplicitte joins (og
>aliaser), så jeg ville skrive din forespørgsel som følger:
<snip SQL>
Efter at have rettet lidt i din kode (der var bare lige et par
henvisninger til de tabeller der ikke var alias til), så virker det
næsten. - Det eneste problem er at den ikke frasorterer de rækker som
har et tagname jeg vil frasortere på baggrund af.
Nu ser min SQL sådan her ud:
SELECT
v.id AS id,
v.title AS title,
ROUND(AVG(vr.rating)) AS rating
FROM
cms_videos_video v
INNER JOIN
cms_videos_tags2videos t2v
ON
v.id = t2v.videoid
INNER JOIN
cms_videos_tags t
ON
t2v.tagid = t.id
LEFT JOIN
cms_videos_ratings vr
ON
v.id = vr.videoid
WHERE
t.name
NOT IN ('Filmtrailer','DVD-Trailer')
GROUP BY
v.id
ORDER BY
rating
DESC
LIMIT
0,1
Jeg har også prøvet at ændre WHERE til
WHERE
( t.name != 'Filmtrailer'
AND
t.name != 'DVD-Trailer' )
men jeg får stadig de film ud som har tags "Filmtrailer" og
"DVD-Trailer"
>De dobbelte anførselstegn i WHERE-klausulen (i den oprindelige
>forespørgsel) ligner også en fejl - jeg ved ikke om MySQL er lige
>så eftergivende som Access på det punkt, men hvis værdierne skal
>læses som tekststrenge, er det kun korrekt at anvende
>apostroffer/enkeltanførselstegn.
Det har du ret i. Desværre ser det ikke ud til at ændre noget.