/ / Order by doesnt work with union, baza danych Microsoft Access, asp.net - asp.net, ms-access, order, union

Zamów przez didnt współpracuje z union, bazą dostępu do microsoft, asp.net - asp.net, ms-access, order, union

Chcę pobrać dane w procentach z bazy danych w oparciu o pole stawki, a także chcę wyświetlać dane losowo więc spróbowałem tego

string sql = "(SELECT TOP 100 PERCENT * FROM tbl_adv WHERE Stars = 7 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SELECT TOP 84 PERCENT * FROM tbl_adv WHERE Stars = 6 ORDER BY Rnd(-(1000*adID)*Time())) UNION (SELECT TOP 72 PERCENT * FROM tbl_adv WHERE Stars = 5 ORDER BY Rnd(-(1000*adID)*Time()))";

Pokazuje prawidłowe dane, ale nie losowo, jakieś sugestie?

dostarczyłem również próbkę do celów testowych, którą można pobrać z linku poniżej http://www.4shared.com/zip/qMSYRglGce/testorderby.html

Odpowiedzi:

3 dla odpowiedzi № 1

W an UNIA zapytaj ZAMÓW PRZEZ należy zastosować do całego zestawu zwróconego przez UNIA
Tworzysz więc zestaw rekordów z trzech podselekcji, a następnie stosujesz kolejność do wynikowego zestawu.

string sql =  @"SELECT * FROM
(
SELECT TOP 100 PERCENT * FROM tbl_adv WHERE Stars = 7
UNION
SELECT TOP 84 PERCENT * FROM tbl_adv WHERE Stars = 6
UNION
SELECT TOP 72 PERCENT * FROM tbl_adv WHERE Stars = 5
)
ORDER BY Rnd(-(1000*adID)*Time())";