2015-10-14 84 views
0

所以我一直試圖找出一段時間。我一直收到「ERROR 1064(42000):您的SQL語法錯誤;檢查與您的MYSQL服務器版本相對應的手冊,以便在Details附近使用正確的語法ON Order.OrderID = Order Details .OrderID LEFT JOIN Products O`在第8行「 我的所有嘗試找到錯誤都讓我無能爲力。我一直在重讀我的書,只是爲了看看我是否錯過了一些東西,但我找不到任何東西。所以任何幫助/解釋是非常感謝。錯誤1064在查看代碼

這是我的sql代碼到目前爲止。

CREATE VIEW ORDERS AS 

SELECT 
    Orders.OrderID, 
    Orders.OrderDate, 
    `Order Details`.ProductID, 
    `Order Details`.UnitPrice, 
    `Order Details`.Quantity, 
    `Order Details`.Quantity * `Order Details.UnitPrice as Total, 
    Products.ProductName, 
    Customers.CompanyName 

FROM Orders 

    LEFT JOIN Employees ON Employees.EmployeeID = Orders.EmployeeID 

    LEFT JOIN Customers ON Customers.CustomerID = Orders.CustomerID 

    LEFT JOIN `Order Details` ON Orders.OrderID = `Order Details`.OrderID 

    LEFT JOIN Products ON Products.ProductID = `Order Details`.ProductID; 

回答

0

您的反引號不平衡(正如您可以在您的問題中看到陰影所示)。首先,我鼓勵你避免命名錶和列,使得它們的名字需要轉義(即避免保留字並僅使用字母數字字符和下劃線)。

此外,您的視圖名稱需要與表名稱不同。

您的查詢更容易編寫和使用表別名閱讀:

CREATE VIEW OrdersWithProducts AS 
    SELECT o.OrderID, o.OrderDate, 
      od.ProductID, od.UnitPrice, od.Quantity, 
      (od.Quantity * od.UnitPrice) as Total, 
      p.ProductName, c.CompanyName 
    FROM Orders o LEFT JOIN 
     Employees e 
     ON e.EmployeeID = o.EmployeeID LEFT JOIN 
     Customers c 
     ON c.CustomerID = o.CustomerID LEFT JOIN 
     `Order Details` od 
     ON o.OrderID = od.OrderID LEFT JOIN 
     Products p 
     ON p.ProductID = od.ProductID; 
+0

對不起的命名規則不能被改變,因爲它是一所學校的做法服務器,所以我不得不在名稱上沒有發言權。不過,我會記住,當我做我自己的服務器。另外我不能相信我錯過了一個小反調。這似乎解決了這個問題。謝謝! – arthos455