MS Access Query(仅限两个表)

时间:2013-09-12 02:02:56

标签: sql ms-access subquery

我有两张桌子:

**T1**
ID |Transaction| amount |
1  |trans1     | 97     |
1  |trans2     | 22     |
2  |trans7     | 98     |


**T2** 
ID |description|spec|
1  |Item 1     |text|
2  |Item 2     |zip |

注意:两个表中的ID列都是相同的。但是,表T1中的ID不是唯一的。

我需要查询从表中检索数据,但只需要具有最高金额的行(表T1)。示例结果:

ID|description|spec|transaction|amount|
1 |item1      |text| trans1    |  97  | 
2 |item2      |zip | trans7    |  98  | 

帮助

谢谢。

2 个答案:

答案 0 :(得分:1)

您应该使用此查询为T2

中的每个ID获取一行
SELECT ID, MAX(AMOUNT) AS AMT FROM T1 GROUP BY ID

然后将第一个表加入其中并选择您需要的所有表。所以它看起来像这样:

SELECT T2.ID,
  description,
  spec,
  transaction ,
  AMT
FROM T2
JOIN
  (SELECT ID, MAX(AMOUNT) AS AMT FROM T1 GROUP BY ID
  ) T3
ON T3.ID=T2.ID;

注意:我在您的数据库中使用了Oracle,您可能需要修改查询以解决关键字冲突。

答案 1 :(得分:0)

尝试以下查询:

SELECT ID, description, spec, `transaction` , amt
FROM T2
JOIN
  (SELECT ID, `transaction`, MAX(amount) AS amt FROM T1 GROUP BY ID) AS T3
ON T3.ID=T2.ID

注意,因为单词transaction可能是保留关键字。您可以随时用刻度标记(如上所述)