"TW" <[EMAIL PROTECTED]> wrote in
message news:[EMAIL PROTECTED]
> I have this query:
>
> SELECT title, artist, hd, bank, bookmark, genre, class, classnumber
> FROM music
> WHERE classnumber=6 OR classnumber=7
> AND hd="B"
> UNION
> SELECT title, artist, hd, bank, bookmark, genre, class, classnumber
> FROM music
> WHERE classnumber=8 OR classnumber=9
> AND hd="A"
> ORDER BY random() LIMIT 2;

Try

SELECT title, artist, hd, bank, bookmark, genre, class, classnumber
FROM music
WHERE
    classnumber=6 OR
    (classnumber=7 AND hd='B') OR
    classnumber=8 OR
    (classnumber=9 AND hd='A')
ORDER BY random() LIMIT 2;

At the very least, use UNION ALL instead of UNION.

> I actually need to have a limit on each SELECT clause so that I only
> get one
> record from either classnumbers 6 or 7 and then one record from
> classnumbers 8 or 9, randomly chosen.

Ah. Then you need something like this:

select title, ... from
(select * FROM music
 WHERE (classnumber=6 OR (classnumber=7 AND hd='B'))
 ORDER BY random() LIMIT 1)
UNION ALL

select title, ... from
(select * FROM music
 WHERE (classnumber=8 OR (classnumber=9 AND hd='A'))
 ORDER BY random() LIMIT 1);

Igor Tandetnik 



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to