【问题标题】:Retrieving Data From Three Table从三个表中检索数据
【发布时间】:2013-12-13 15:10:17
【问题描述】:
                cmd =new SqlCommand("Select i.InvoiceNo,i.TotalAmount,
                     i.PaymentStatus,m.MovieID,m.MovieName, s.CompanyName
                     From InvoiceDetails i INNER JOIN Movie m ON 
                     i.InvoiceNo=m.InvoiceNo and Supplier s 
                     Inner Join Movie m ON s.SupplierID=m.SupplierID 
                     Where SupplierID=@supplierID AND 
                     CompanyName=@companyName AND PaymentStatus=@ddlPaymentStatus",
                     conPayment);

这是错误的 Select 语句,如何修改它才能成功从三个表中获取数据。

【问题讨论】:

  • 您应该发布您的表格结构。像这样很难知道你哪里出错了
  • 你说的这是错误的是什么意思?语法错误?没有得到你想要的结果?
  • 是的。只是语法错误。如果两个表我可以成功检索记录,但三个表我不知道检索它。
  • 什么是语法错误?

标签: c# mysql asp.net sql


【解决方案1】:

让我感到震惊的一件事是一次 JOIN 操作不正确:

你有:

...
from InvoiceDetails i
inner join Movie m on i.InvoiceNo = m.InvoiceNo
  and Supplier s
inner join Movie m on s.SupplierID = m.SupplierID
...

应该是:

select i.InvoiceNo,i.TotalAmount,i.PaymentStatus,m.MovieID,m.MovieName,s.CompanyName
from InvoiceDetails i
inner join Movie m on i.InvoiceNo = m.InvoiceNo
inner join Supplier s on s.SupplierID = m.SupplierID
where s.SupplierID = @supplierID
  and s.CompanyName = @companyName
  and i.PaymentStatus = @ddlPaymentStatus

您已经加入Movie 一次,然后您还必须加入supplier。你这样做的方式肯定会给你一个语法错误。一次是因为有两个具有相同别名的表,然后它还会抱怨不知道供应商,因为它会期待之前加入的表中的一列。

【讨论】:

  • 使用M.SupplierID = @supplierID,您可能还需要在 CompanyName 和 PaymentStatus 前面加上任何合适的表别名。
  • 您必须在列名前加上表别名。在那种情况下,s.supplierID 等我编辑了我的答案。
  • 另外,如果@FilipeSilva 回答了您的问题,请务必投票给他。
  • 感谢@ChristopherBrown 的帮助。
  • 感谢@FilipeSilva 愿意帮助并解决了我的问题。
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 2019-04-30
相关资源
最近更新 更多