2017-08-01 40 views
0

我已在此處閱讀了一些帖子。使用這篇文章(Select value A from the same record as max(value B) and then join with another table on value C)我已經開始我的查詢,但它不起作用。甚至在Access中允許嵌套SELECT查詢?根據第二列中列y的最大值在列x上加入2個表格

_______________________ 
|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

我應該提到我在那裏有各種各樣的其他領域,但我不認爲它們與邏輯有關。 – Elizabeth

回答

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; 
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" 
; 
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 

也不需要完全限定每個字段名稱,如果它是唯一的一個表。

相關問題