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 № 1W 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())";