2015-10-16 100 views
1

好的,所以我花了幾個小時試圖弄清楚這一點,我即將瘋了!我得到的是一系列包含銷售數據的表格,其中一些字段需要使用C#輸出到網頁。我已經完成了程序,我只是無法弄清楚正確的SQL查詢字符串用於構建一個正確的數據集來獲得我所需要的。需要幫助找到正確的SQL查詢字符串

This is my ERD structure

從什麼我一直在玩弄一天的大部分時間我發現,實際上我需要從LINEITEM表用的東西的數據集,加「說明」,「UnitWeight」 ,Inventory表中的'UnitPrice';來自Customer表的'Company'和'addrBilling';和「發票表」中的「OrderDate」。

我試過的一個字符串是這個小測試,看看我是否可以從InvoiceNum值中的一箇中獲得所需的所有字段。沒有運氣。輸出僅顯示所有數據的倍數。

SELECT * 
FROM customer JOIN lineitem JOIN inventory 
WHERE lineitem.InvoiceNum = 2002; 

此查詢是從MS Access構建的(我不得不使用它)。訪問只是給我一個'表達式中的類型不匹配'。看了起來,發現它可以處理數據類型,但我已經檢查了所有內容,並且任何相應的字段(如兩個SKU)具有相同的數據類型。

SELECT LineItem.*, 
    Customer.Company, 
    Customer.addrBilling, 
    Inventory.Description, 
    Inventory.UnitWeight, 
    Inventory.UnitPrice, 
    Invoice.OrderDate, 
    * 
FROM (Customer INNER JOIN Invoice ON Customer.custNumber = Invoice.custNumber) 
    INNER JOIN 
    (Inventory INNER JOIN LineItem ON Inventory.SKU = LineItem.SKU) 
     ON Invoice.InvoiceNumber = LineItem.InvoiceNumber; 

而無數更多的都失敗了。

希望有些陌生人能讓我走上正確的道路。

謝謝任何​​人的任何建議。

+0

您的ERD結構沒有任何方向;我們怎麼知道哪一方是關係的一面,哪一方是多方面的? –

+0

是sql還是ms-access –

+0

如何將庫存連接到客戶或發票?在這種情況下缺少連接 –

回答

1

你可以試試這個:

SELECT LineItem.*, 
    Customer.Company, Customer.addrBilling, 
    Inventory.Description, Inventory.UnitWeight, Inventory.UnitPrice, Invoice.OrderDate 
FROM ((Customer 
INNER JOIN Invoice ON Customer.custNumber = Invoice.custNumber) 
INNER JOIN LineItem ON Invoice.InvoiceNumber = LineItem.InvoiceNumber) 
INNER JOIN Inventory Invoice.ItemId=Inventory.Id 

在C#中,你可以在一個多字符串字面把這個包:

var sql = @" 
    SELECT LineItem.*, 
     Customer.Company, Customer.addrBilling, ... 
"; 

你應該學習INNER JOIN

+0

由於OP的問題完全是關於SQL語法的,因此答案也應該是純SQL(不需要C#字符串連接)。至少,由於OP已經表明這個SQL語句正在C#中使用,所以使用多行字符串。 –

+0

這個問題被標記爲C#,這就是爲什麼 –

+0

它應該是什麼?這個問題沒有什麼特別的C#;甚至沒有任何與C#相關的代碼。 –

-2

的sooo ....我是個白癡。看起來我做得比想要的要難得多。事實證明,我的第一次嘗試是非常正確的,我只是忽略了一些事情,並且排錯了順序。

原來我的回答是:

SELECT * FROM Customer NATURAL JOIN Invoice NATURAL JOIN lineitem NATURAL JOIN inventory; 

尼斯和容易使我的數據集,其中包含每個LineItem獨特的元組。我可以讀入我的頁面。

我對任何人的浪費時間表示歉意。謝謝您的幫助!

+1

訪問SQL不能理解'NATURAL JOIN':「FROM子句中的語法錯誤。」 –