2016-06-21 11 views
0

私は1つのテーブルを持っています。それは "spcDB"と呼ばれるリンクされています(プライマリキーなし)。私は "地域"と "場所"の列に応じてランダムに12レコードを選択する必要があります。この領域には、「211」と「231」の2つの数値があります。私は8 - "211"と4 - "231"レコードを選択する必要があります。 「場所」からのすべての値はユニークです。ランダムレコードを選択

SELECT TOP 8 spcDB.LOC, spcDB.AREA_TYPE 
FROM spcDB 
WHERE randomizer() = 0 and spcDB.AREA_TYPE = "211" 
ORDER BY rnd(isnull(spcDB.LOC) * 0 + 1); 

SELECT TOP 4 spcDB.LOC, spcDB.AREA_TYPE 
FROM spcDB 
WHERE randomizer() = 0 and spcDB.AREA_TYPE = "231" 
ORDER BY rnd(isnull(spcDB.LOC) * 0 + 1); 

まず場所の8組と211個の領域を生成

Function Randomizer() As Integer Static AlreadyDone As Integer If AlreadyDone = False Then Randomize: AlreadyDone = True Randomizer = 0 End Function

..and私のSELECTのように見える..:

私はこのVBAコード(moduleOne)を書きました。 2番目の4つのloc + 231の領域。 私の質問は、これら2つの選択肢を1つに結合する方法です。

+1

プットUNION:すべての固有IDの変更 はこれを回避するには、に時間依存種を追加のRnd

答えて

2

アクセスを閉じて再度開くと、クエリは同じシーケンスを使用します。それらの間のすべての

SELECT TOP 8 
    spcDB.LOC, 
    spcDB.AREA_TYPE, 
    Rnd(-Timer()*spcDB.LOC) AS [Rnd Generator] 
FROM 
    spcDB 
WHERE 
    spcDB.AREA_TYPE = "211" 
ORDER BY 
    Rnd(-Timer()*spcDB.LOC) 

UNION ALL 

SELECT TOP 4 
    spcDB.LOC, 
    spcDB.AREA_TYPE, 
    Rnd(-Timer()*spcDB.LOC) AS [Rnd Generator] 
FROM 
    spcDB 
WHERE 
    spcDB.AREA_TYPE = "231" 
ORDER BY 
    Rnd(-Timer()*spcDB.LOC) 
関連する問題