Access 데이터베이스에서 임의의 고유 한 행을 반환하는 쿼리가 있습니다. 다음은 쿼리입니다.AccessDataSource가 Access에서 쿼리 할 때 다른 결과를 반환하는 이유는 무엇입니까?
SELECT * FROM
(SELECT DISTINCT m.MemberID, m.Title, m.FullName, m.Address,
m.Phone, m.EmailAddress, m.WebsiteAddress FROM Members AS m INNER JOIN MembersForType AS t ON m.MemberID = t.MemberID WHERE
(Category = 'MemberType1' OR Category = 'MemberType2')) as Members
ORDER BY RND(members.MemberID) DESC
Access에서 실행할 때마다 임의의 정렬 순서에 따라 매번 다른 순서로 행을 반환합니다. 그러나 웹 응용 프로그램을 통해 실행할 때마다 행은 매번 같은 순서로 반환됩니다. 여기에 내 코드 숨김에서 호출하는 방법이다 : 나는 어쩌면 쿼리가 캐시되고 있다고 생각하지만 결과는 동일하기 때문에
private void BindData()
{
using (AccessDataSource ds = new AccessDataSource("~/App_Data/mydb.mdb", GetSQLStatement()))
{
ds.DataSourceMode = SqlDataSourceMode.DataReader;
ds.CacheDuration = 0;
ds.CacheExpirationPolicy = DataSourceCacheExpiry.Absolute;
ds.EnableCaching = false;
listing.DataSource = ds.Select(new DataSourceSelectArguments());
listing.DataBind();
if (listing.Items.Count == 0)
noResults.Visible = true;
else
noResults.Visible = false;
}
}
내가 캐싱에 대한 모든 것들에 추가. 코드에 중단 점을 넣어 쿼리가 위와 동일하다는 것을 확인했습니다.
아이디어가 있으십니까? 이것은 나를 미치게합니다. 동일한 시드 값마다 사용되는 새로운 연결에 대해 ACE/제트 RND 함수 실행시
동일한 임의 순서로 반환되었거나 표시되는 순서에 지능이 있습니까? –
동일한 임의의 순서로 표시됩니다. – Phill
나는 이것을 문제 해결에 관한 것이지 대답이 아니므로 주석에 넣겠다.하지만 웹 버전의 select 절에 "RND (members.MemberID)"를 추가하여 그 동일한 무작위가 반환되는지 확인해 보았다. 번호 매번? 한 가지 생각은 결과를 캐싱하여 RND()를 최적화하는 것입니다. – JohnFx