好吧,所以我花了好几个小时试图搞清楚这一点,我就要疯了!我所得到的是一系列包含销售数据的表格,其中一些字段需要使用C#输出到网页。我已经构建了相当多的程序我只是无法找出正确的SQL查询字符串来构建正确的数据集以获得我需要的东西。
从我一直玩的那天开始,我发现基本上我需要一个包含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;
无数更多都失败了。
希望有些陌生人可以让我走上正确的道路。
感谢任何人提供任何建议。
答案 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的唯一元组。我可以读到我的页面。
我为任何人的浪费时间道歉。谢谢你的帮助!