【问题标题】:SQL Show fields that match WHERE statement otherwise show the othersSQL 显示匹配 WHERE 语句的字段,否则显示其他字段
【发布时间】:2014-09-22 00:30:56
【问题描述】:

这些是我正在使用的参数,我可以让条目显示与“礼服衬衫”项目匹配的条目,但如果它们与“礼服衬衫”不匹配,我不知道如何显示其他条目.我一直在尝试使用 AND/OR,但无法正确显示。

“显示所有订购过名为“Dress Shirt”的商品的客户的姓氏、名字、电话和总金额。还显示所有其他客户的姓氏、名字和电话。显示按姓氏排序的结果升序,然后是降序的 FirstName。"

SELECT LastName, FirstName, Phone, TotalAmount
FROM Customer, Invoice, Invoice_Item
WHERE Customer.CustomerID = Invoice.CustomerNumber AND Invoice.InvoiceNumber = 
Invoice_Item.InvoiceNumber AND Item ='Dress Shirt';

【问题讨论】:

  • 我正在使用 MS Access
  • Item ='Dress Shirt' 来自哪个表?
  • 应该从 Invoice_Item 中提取

标签: sql ms-access


【解决方案1】:

试试这个:

SELECT LastName, FirstName, Phone, TotalAmount
FROM Customer
INNER JOIN Invoice ON Customer.CustomerID = Invoice.CustomerNumber
LEFT JOIN Invoice_Item ON Invoice.InvoiceNumber = Invoice_Item.InvoiceNumber 
                      AND invoice_item.Item ='Dress Shirt'
;

Access 可能会坚持为联接使用括号,如下所示:

SELECT LastName, FirstName, Phone, TotalAmount
FROM ((Customer
INNER JOIN Invoice ON Customer.CustomerID = Invoice.CustomerNumber)
LEFT JOIN Invoice_Item ON Invoice.InvoiceNumber = Invoice_Item.InvoiceNumber 
                      AND invoice_item.Item ='Dress Shirt')
;

如果您不熟悉左连接,那么 this example 可能会有所帮助。

【讨论】:

  • 我收到一条错误消息,提示“不支持 JOIN 表达式。”
  • 虽然我已经多年没有使用 Access,但这种语法 Access 确实支持;你必须输入这个作为一个完整的查询,有办法做到这一点,但我不能告诉你在哪里。或者,当您添加表以实现左连接时,我认为在网格查询中有一个选项 - 但我不能告诉您确切的方式
  • 我非常感谢您的指导。谢谢!我会继续搞砸的。
【解决方案2】:
SELECT Lastname, FirstName, Phonem TotalAmount
FROM (Customer INNER JOIN Invoice ON Customer.CustomerID=Invoice.CustomerNumber) `LEFT JOIN Invoice_Item ON Invoice.InvoiceNumber=Invoice_item.InvoiceNumber
Where Invoice_item.Item='Dress Shirt'
Order by LastName, FirstName DESC;

【讨论】:

  • 选择姓、名、电话、总额
  • 您能解释一下这是如何解决的吗?谢谢!
  • 在 MS Access 中,您需要在连接语法之间放置括号。
  • 啊,它只是需要的一组括号!该死的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2020-07-19
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多