我需要你的帮助来为我可以从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_ID
中Customer_ID
所有这些记录,其中{{1}}不在此查询的第1部分的结果中,而{{1}}是在{{1}}的结果中本查询的第2部分。
我知道可以通过加入或类似的东西轻松完成,但我真的不擅长sql。请帮帮我。
答案 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%')