您应该能够使用“选择n的组”类型的查询,但你需要一个唯一的ID:
SELECT
t.ID,
t.Element,
t.Section
FROM Elements AS t
WHERE t.ID In (
SELECT Top 2 ID
FROM Elements q
WHERE q.Element=t.Element
ORDER BY Rnd([id])*1000)
我一直在这个许多次,我想你是将不得不为你的随机排序添加一个字段,然后在运行查询之前更新该字段。这将在[能力要素]更新一个名为RandomNumber场
UPDATE [Competency Elements]
SET [Competency Elements].RandomNumber = Rnd([element id])*1000;
然后百分比选择,我认为它为这个特定的数据集是大于33:
SELECT Val([comp section number]) AS [Sect No],
s.[section description],
e.[element number],
e.[element description],
Rnd(e.[element id]) AS Expr1,
s.[section id],
e.[element id],
x.example,
s.[competency id],
c.[comp number],
c.[competency category]
FROM competencies AS c
INNER JOIN (([competency sections] AS s
INNER JOIN [competency elements] AS e
ON s.[section id] = e.[section id])
INNER JOIN examples AS x
ON e.[element id] = x.[element id])
ON c.[competency id] = s.[competency id]
WHERE (((e.[element id]) IN (SELECT TOP 35 PERCENT [element id]
FROM [competency elements] q
WHERE q.[section id] = e.[section id]
ORDER BY randomnumber)))
ORDER BY Val([comp section number]);
有许多关于从一个组中随机选择的问题。
我有一个主键。如果我这样写,那么“t”意味着表?我是否将该代码放入查询中? “* 1000”做什么?非常感谢! – user1912877
我还需要将这些结果提供给我已经设置的报告。我假设这是一个查询返回,但我不确定。我从来没有在Access中写过代码。 – user1912877
'元素作为t'意味着一个别名(将名字t赋给这个表)。您需要它,以便您可以在内部SQL'FROM Elements q'中再次引用元素,该元素可以写为'FROM Elements AS q''。* 1000因为Rnd返回一个小数,所以乘以。 – Fionnuala