需要帮助才能找到正确的SQL查询字符串

时间:2015-10-16 06:16:38

标签: sql ms-access

好吧,所以我花了好几个小时试图搞清楚这一点,我就要疯了!我所得到的是一系列包含销售数据的表格,其中一些字段需要使用C#输出到网页。我已经构建了相当多的程序我只是无法找出正确的SQL查询字符串来构建正确的数据集以获得我需要的东西。

This is my ERD structure

从我一直玩的那天开始,我发现基本上我需要一个包含LineItem表中的东西的数据集,加上'描述', ' UnitWeight',' UnitPrice'来自库存表; '公司'和' addrBilling'来自Customer表;和' 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;

无数更多都失败了。

希望有些陌生人可以让我走上正确的道路。

感谢任何人提供任何建议。

2 个答案:

答案 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

答案 1 :(得分:-2)

Sooo ....我是个白痴。看起来我正在努力实现这一目标。而且,事实证明,我的第一次尝试是非常正确的,我只是遗漏了一些事情并且订单错了。

原来我的回答是:

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

很好,很容易使我的数据集包含每个LineItem的唯一元组。我可以读到我的页面。

我为任何人的浪费时间道歉。谢谢你的帮助!