2010-01-13 93 views
2

我不太確定爲什麼下面的查詢不能在Access中運行。 它要求我給s1.skuMS Access中的子查詢問題


SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr, q2.* 
FROM tblSkuApex AS s1, 
       (SELECT MAX(s2.begindatum) 
       FROM tblskuapex s2 
       WHERE s1.sku = s2.sku) q2 

回答

4

的價值,你把它的樣子,你需要一個交叉連接到Q2表,這是根據每個記錄的s1.sku值被改變s1表的表格,這是不可接受的。

我認爲你應該把q2子查詢作爲列而不是表格。既然你檢索單個值,它可以很容易把這樣的:

SELECT s1.SkuApexId, s1.sku, s1.apex, s1.btw, s1.gebruikernr, 
     (SELECT MAX(s2.begindatum) 
       FROM tblskuapex s2 
       WHERE s1.sku = s2.sku) as maxbegindatum 
FROM tblSkuApex AS s1 

,甚至更好,你爲什麼不把它作爲一個正常的聚集,因爲你來自同一個表要求最高:

SELECT 
    s1.SkuApexId, s1.sku, s1.apex, 
    s1.btw, s1.gebruikernr, MAX(begindatum) 
FROM tblSkuApex AS s1 
group by 
    s1.SkuApexId, s1.sku, s1.apex, 
    s1.btw, s1.gebruikernr 

注意:您可以忽略所有的s1別名

+0

這使得更有意義,謝謝。 – skerit 2010-01-13 14:24:08