我在这里看过一些帖子。使用这篇文章(Select value A from the same record as max( value B) and then join with another table on value C)我已经开始查询但它不起作用。嵌入式SELECT查询甚至是否允许在Access?
中使用套环
_______________________
|hole_id|max_depth|...|
| 1 | 340 | |
| 2 | 400 | |
| 3 | 250 | |
测定
______________________
|hole_id|depth_to|...|
| 1 | 58 | |
| 1 | 62 | |
| 1 | 69 | |
| 2 | 102 | |
| 2 | 110 | |
| 3 | 20 | |
| 3 | 25 | |
我需要返回
________________________________
|hole_id|max_depth|depth_to|...|
| 1 | 340 | 69 | |
| 2 | 400 | 110 | |
| 3 | 250 | 25 | |
-
SELECT DISTINCT A.hole_id, A.max_depth, B.depth_from, B.depth_to
FROM collar A
LEFT JOIN assay B
ON A.hole_id = B.hole_id
WHERE A.hole_id = (
SELECT max(C.depth_to)
FROM assay C
WHERE C.hole_id = A.hole_id
)
WHERE A.max_depth > B.depth_to AND A.section="BLK" AND A.holetype="Exploration"
;
答案 0 :(得分:1)
只需加入两个表,返回最大depth_to并将其余表分组。在这种情况下无需嵌套查询。
SELECT assay.hole_id
, max_depth
, MAX(depth_to) AS max_depth_to
FROM assay LEFT JOIN collar ON assay.hole_id = collar.hole_id
GROUP BY assay.hole_id, max_depth
ORDER BY assay.hole_id
如果每个字段名称对于一个表都是唯一的,也不需要完全限定每个字段名称。
答案 1 :(得分:0)
SELECT collar.hole_id, collar.max_depth, (select max(depth_to) from assay where assay.hole_id=collar.hole_id) AS depth_to
FROM collar;
答案 2 :(得分:0)
是的,嵌套SELECT
查询可以在Access中完成。这可以为您提供您正在寻找的内容:
SELECT
A.hole_id,
A.max_depth,
B.depth_from,
B.depth_to
FROM
collar A
LEFT JOIN
(select B.*
from assay B
inner join (
select hole_id, max(depth_to) as max_depth
from assay
group by hole_id
) BD on BD.hole_id=B.hole_id and BD.max_depth=B.depth_to
) as BM on BM.hole_id=A.hole_id
WHERE
A.section="BLK" AND A.holetype="Exploration"
;