带有子查询的MS ACCESS查询

时间:2013-06-13 04:50:54

标签: sql ms-access vb6

我需要你的帮助来为我可以从VB6运行的MS Access数据库创建两个查询。这是表格的表格模式( ORDER,AMC,Customer

表1:订单
在Order_ID
order_date的
CUSTOMER_ID

表2:AMC
AMC_ID
在Order_ID
Next_Renew_ID

表3:客户
CUSTOMER_ID
CUSTOMER_NAME

现在我想从Order表中选择2以下

查询1
第1部分:从Order_ID AMC选择所有Next_Renew_ID='N/A'Order 第2部分:现在从Order_ID中选择所有这些记录,其中Order_ID不在此查询的第1部分的结果中。

查询2
第1部分:从AMC Next_Renew_ID='N/A'中选择所有Customer_ID。{ 第2部分:现在从Customer Customer_Name Like 'Krish%'中选择所有Order。{ 第3部分:现在选择Order_IDCustomer_ID所有这些记录,其中{{1}}不在此查询的第1部分的结果中,而{{1}}是在{{1}}的结果中本查询的第2部分。

我知道可以通过加入或类似的东西轻松完成,但我真的不擅长sql。请帮帮我。

2 个答案:

答案 0 :(得分:0)

第1部分 - 使用LEFT JOIN / NULL检查。这也可以使用NOT IN(或者可能NOT EXISTS来实现,假设Access支持它):

SELECT O.*
FROM Order O
   LEFT JOIN AMC A ON O.Order_ID = A.Order_Id
      AND A.Next_Renew_ID = 'N/A'
WHERE A.Order_Id IS NULL

第2部分 - 使用与上述相同的查询,但在客户表中添加INNER JOIN以确保客户首先存在于该表中:

SELECT O.*
FROM Order O
   INNER JOIN Customer C ON O.Customer_ID = C.Customer_Id
   LEFT JOIN AMC A ON O.Order_ID = A.Order_Id
      AND A.Next_Renew_ID = 'N/A'
WHERE A.Order_Id IS NULL AND  
    C.Customer_Name Like 'Krish%'

答案 1 :(得分:0)

我的英语非常差,不知道是否有理解你的意思

查询1 第2部分     从订单中选择*,其中Order_ID不在(从订单中选择a.Order_ID,在a.Order_ID = b.a.Order_ID上加入AMC b,其中Next_Renew_ID =' N / A')

查询2 第2部分

select Customer_ID from Customer where Customer_Name Like 'Krish%'

第3部分

select * from Order where Order_ID not in (select Distinct Order_Id from AMC where Next_Renew_ID='N/A') and Customer_ID in (select Customer_ID from Customer where Customer_Name like 'Krish%')