SQLITE INNER JOIN梦魇,需要一个解决方案

时间:2010-02-08 02:51:27

标签: sql sqlite

很高兴找到天才成员这样一个有用的网站。我一直试图找到这个SQLITE问题的解决方案。谷歌没有帮助我,除了找到这个网站。 SQL查询在同一数据库的MSAccess版本上正常工作。

这是我的SQL语句 - 这对我不起作用。


SELECT Invoices.InvoiceNumber, Invoices.Quantity,Invoices.Code, Invoices.Price,Invoices.Discount, Invoices.InvoiceGrandTotal, Employees.EmployeeName, Customers.CustomerName, Invoices.DateOfInvoice, [price]*[Quantity] AS Total, Customers.Address, Products.Description,Products.Unit  
    FROM Products 
        INNER JOIN (
            (   
                ( Invoices INNER JOIN InvoiceDetails 
                    ON Invoices.InvoiceNumber = InvoiceDetails.InvoiceNumber
                ) INNER JOIN Customers 
                    ON Invoices.CustomerID = Customers.CustomerID
            ) INNER JOIN Employees 
                ON Invoices.UserID = Employees.EmployeeID
        ) ON Products.Code = InvoiceDetails.Code  
    WHERE (((InvoiceDetails.InvoiceNumber)='10111'));

错误消息为:Cannot compile Select-Statement: no such column: Invoices.InvoiceNumber

2 个答案:

答案 0 :(得分:6)

这通常只是意味着您错误拼写了列名...检查您的发票表并确保该列是InvoiceNumber而不是“Invoice_Number”或类似的东西......

此外,这个查询的一个更简单的版本看起来像这样..没有所有奇怪的嵌套:

SELECT 
   Invoices.InvoiceNumber, 
   Invoices.Quantity,
   Invoices.Code, 
   Invoices.Price,
   Invoices.Discount, 
   Invoices.InvoiceGrandTotal, 
   Employees.EmployeeName, 
   Customers.CustomerName, 
   Invoices.DateOfInvoice, 
   [price]*[Quantity] AS Total, 
   Customers.Address, 
   Products.Description,
   Products.Unit 
FROM
   Invoices

   JOIN Employees 
      ON Employees.EmployeeID = Invoices.UserID 

   JOIN Customers 
      ON Customers.CustomerID = Invoices.CustomerID

   JOIN InvoiceDetails 
      ON InvoiceDetails.InvoiceNumber = Invoices.InvoiceNumber

   JOIN Products
      ON Products.Code = InvoiceDetails.Code

WHERE 
   InvoiceDetails.InvoiceNumber = '10111'

答案 1 :(得分:0)

我认为这个问题可能与案例敏感性有关。除非我弄错了,否则MS Access字段名称不区分大小写。在SQLITE表定义中检查有问题的列名称是否有正确的大小写。