我在MS Access的两个表,我想添加一个字段,告诉它记录从另一个表中有一个值,该值比第一场的值小于那些表之一,但谈到最近的? 我有这个疑问至今(只是一个select语句来测试输出,并不会改变现有的表),但它列出了小于查询值的所有值:
SELECT JavaClassFileList.ClassFile, ModuleList.Module
FROM JavaClassFileList, ModuleList
WHERE ModuleList.Order<JavaClassFileList.Order;`
我试图使用像SELECT JavaClassFileList.Classfile, MAX(ModuleList.Module)
这将只显示最大模块,但上面的select语句组合,但它会说,它会只返回一个记录。
输出所需的:我有一些记录,A,B,和C,I必称他们每个存储各种信息,而在列存储的732的值,和b是存储在同一列中的731值。 c为存储720的值。在另一个表中,d被存储的730的值,以及E是存储的718的值我想是这样的输出(它们是有序的最大到最小):
- 732 d 730
- b 731 d 730
- Ç720ë718
可以有右侧重复,而是在左边没有重复。 我怎样才能得到这样的结果?
我会使用相关子查询接近这种类型的查询。 我想下面的话中访问:
SELECT jc.ClassFile,
(select top 1 ml.Module
from ModuleList as ml
where ml.[Order] < jc.[Order]
)
FROM JavaClassFileList as jc;
我假设秩序是模块唯一的。 如果不是,JavaClassFileRecords可能在结果中多次出现。
如果没有模块可以为JavaClassFile找到那么就不会在搜索结果中。 如果你希望它在这样的情况下显示出来(用空模块),更换INNER JOIN
与LEFT OUTER JOIN
。
SELECT j.ClassFile, m.Module
FROM JavaClassFileList j
INNER JOIN ModuleList m
ON m.Order =
(SELECT MAX(Order)
FROM ModuleList
WHERE Order < j.Order)
文章来源: How do I return a value of an entity in a table that is less than but closest to the value in another table for each element in the last table in SQL?