2013-06-13 245 views
0

我需要你的帮助来为MS Access数据库创建两个查询,我可以从VB6运行。这里是我的表的表架构(ORDER,AMC,客户MS ACCESS查询子查询

表1:订购
Order_ID上
order_date的
CUSTOMER_ID

表2:AMC
AMC_ID
Order_ID
Next_Renew_ID

表3:客户
CUSTOMER_ID
CUSTOMER_NAME

现在我想从订单表,它做2选择以下

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

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

我知道这可以很容易地使用连接或类似的东西,但我真的不擅长sql。请帮帮我。

回答

0

第1部分 - 这使用LEFT JOIN/NULL检查。这也可以使用NOT IN实现(或可能NOT EXISTS假设访问支持的话):

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%' 
+0

当试图使用这些查询,GOT错误说'联接表达式不支持。 '。我该怎么办? –

0

我的英语很差,不知道有没有明白你的意思

查询1个 部分2 塞莱ct *来自订单,其中Order_ID不在(从订单中选择a.Order_ID左加入a.Order_ID上的AMC b = b.a。Order_ID上其中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%')