2013-06-13 290 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%')