2014-12-03 52 views
0

我想要拿出一個查詢來顯示一個成員所做的購買和產品信息,我想知道是否有辦法創建一個條件語句來確定會員購買的產品是否來自服裝表,配件表或他們是否從兩張表中購買了產品。以及決定哪個表是Product表中ProductID的決定因素(如果用戶不是,而是來自服裝表),ProductID應該爲0.如果需要,ProductID通過ProductTypeID連接到Clothing和Accessory表。更多的信息,讓我知道,謝謝!有條件的聲明,以確定哪些表中選擇從Access 2013

在Access的表的圖像是here

這裏,它是在SQL視圖

SELECT Member.MemberID, Member.FirstName, Member.LastName, 
Purchase.PurchaseDate, LineItem.CalculatedPrice, Product.ProductType 
FROM ClothingType 
    INNER JOIN ((AccessoryType INNER JOIN (((Member INNER JOIN Purchase 
    ON Member.MemberID = Purchase.MemberID) 

    INNER JOIN (Product INNER JOIN LineItem ON Product.ProductID = LineItem.ProductID) 
    ON Purchase.PurchaseID = LineItem.PurchaseID) 

    INNER JOIN Accessory ON Product.ProductID = Accessory.ProductTypeID) 
    ON AccessoryType.AccessoryTypeID = Accessory.AccessoryTypeID) 

    INNER JOIN Clothing ON Product.ProductID = Clothing.ProductTypeID) 
    ON ClothingType.ClothingTypeID = Clothing.ClothingTypeID; 
+0

這將是如果您可以切換到SQL視圖並在此複製粘貼SQL語句,那麼效果更好 – cha 2014-12-03 22:39:43

+0

好的,更新後的原始帖子。 – Jerryq27 2014-12-03 22:48:30

+0

我會建議重新設計數據庫,是否有任何理由不應將附件列在組合服裝附件表中,並附加一個表示項目類型的字段/列?我對有些產品中沒有包含細節感到有點驚訝。 – Fionnuala 2014-12-04 00:12:19

回答

0

您需要修改您的查詢中使用左連接。不幸的是MS Access對JOINS中的圓括號有着瘋狂的看法,所以我的查詢可能是錯誤的。請在下面評論,如果訪問抱怨JOIN子句中的錯誤,我會盡我所能來解決它​​:

SELECT Member.MemberID, Member.FirstName, Member.LastName, 
Purchase.PurchaseDate, LineItem.CalculatedPrice, Product.ProductType 
FROM Member INNER JOIN (Purchase 

    INNER JOIN (Product INNER JOIN (LineItem 

    LEFT JOIN (Accessory LEFT JOIN (AccessoryType 
    LEFT JOIN (Clothing LEFT JOIN ClothingType ON 
       ClothingType.ClothingTypeID = Clothing.ClothingTypeID) 
    ON Product.ProductID = Clothing.ProductTypeID) 
    ON AccessoryType.AccessoryTypeID = Accessory.AccessoryTypeID) 
    ON Product.ProductID = Accessory.ProductTypeID) 

    ON Product.ProductID = LineItem.ProductID) 
    ON Purchase.PurchaseID = LineItem.PurchaseID) 
    ON Member.MemberID = Purchase.MemberID); 

然而,正如我上面提到的,可能不是因爲訪問的愚蠢圍繞其使用工作的JOIN的。您可以更好地雙擊設計器中最後四條連接線(在Product的右邊),並將它們全部設置爲「從左側表格中選擇全部,並且只選擇與右側表格匹配的選項」選項(即在准入方面)

更新LEFT JOIN:忘了補充:一旦你有你的加入工作,所有你需要做的是使用表達式的配件/服裝的描述是這樣的:

Iif(IsNULL(AccessoryType.Description), ClothingType.Description, AccessoryType.Description) as Description 
+0

是的訪問抱怨連接,你可以嘗試修復它,我會嘗試將其轉換爲更易於訪問的格式,讓我知道如果你決定接受這一挑戰,謝謝! – Jerryq27 2014-12-04 04:56:24

+1

您是否嘗試過使用GUI?相信我這很容易。 – cha 2014-12-04 05:05:49

相關問題