2017-07-02 13 views
1

データベースはhttp://www.w3schools.com/sql/trysql.asp?filename=trysql_select_allにあります。私は、Speedy Express Shipping Companyから1996年7月に製品受注した顧客のリストを取得したいと思っており、従業員によって提供されました:Davolio NancyとPeacock Margaret。結果は、持っている必要があります:顧客、連絡先、住所、都市、郵便番号および国 w3schoolデータベースを照会したい

    • 名orderDetailID彼らは運送会社の
    • コンタクト
    • 商品名、価格と数量を置い
    • 商品名、価格および単位は製品の
    • カテゴリーを買っ
    私はというエラーを取得し

    SELECT 
        c.CustomerName, 
        c.ContactName, 
        c.Address, 
        c.City, 
        c.PostalCode, 
        c.Country, 
        o.OrderDetailID, 
        s.Phone, 
        r.ProductName, 
        r.Price, 
        o.Quantity, 
        g.CategoryName 
    FROM Customers c 
    JOIN Orders d 
        on (c.CustomerID = d.CustomerID) 
    LEFT JOIN OrderDetails o 
        on (o.OrderID = d.OrderID) 
    LEFT JOIN Shippers s 
        on (s.ShipperID = d.ShipperID) 
    LEFT JOIN Products r 
        on (r.ProductID = o.ProductID) 
    LEFT JOIN Categories g 
        on (g.CategoryID = r.CategoryID) 
    LEFT JOIN Employees e 
        on (e.EmployeeID = d.EmployeeID) 
    WHERE s.ShipperName = 'Speedy Express' AND 
        ((e.LastName = 'Davolio' AND e.FirstName = 'Nancy') OR 
        (e.lastName = 'Peacock' AND e.firstName = 'Margaret')) AND 
        EXTRACT(YEAR_MONTH FROM d.OrderDate) = 199607; 
    

    :10ここに

    は私のクエリです

    ERROR 1: Could not prepare statement (1 near "FROM": syntax error) 
    

    次のように私は(日付を抽出するの)最後の条件を削除する場合:

    SELECT c.CustomerName, c.ContactName, c.Address, c.City, c.PostalCode, c.Country, o.OrderDetailID, s.Phone, r.ProductName, r.Price, o.Quantity, g.CategoryName FROM Customers c JOIN Orders d on (c.CustomerID = d.CustomerID) LEFT JOIN OrderDetails o on (o.OrderID = d.OrderID) LEFT JOIN Shippers s on (s.ShipperID = d.ShipperID) LEFT JOIN Products r on (r.ProductID = o.ProductID) LEFT JOIN Categories g on (g.CategoryID = r.CategoryID) LEFT JOIN Employees e on (e.EmployeeID = d.EmployeeID) WHERE s.ShipperName = 'Speedy Express' AND((e.LastName = 'Davolio' AND e.FirstName = 'Nancy') OR (e.lastName = 'Peacock' AND e.firstName = 'Margaret')); 
    

    エラーが消えます。ですから、どうすればエラーが発生することなくyear_monthの条件を修正できますか?

  • +0

    使用しているMySQLのバージョンは何ですか? –

    +0

    私はw3schools.comでSQLエディタを使用しています –

    答えて

    1

    あなたのバージョンのMySQLは何らかの理由でYEAR_MONTHEXTRACT()と一緒に使用されていることをサポートしていません。ただ、次の簡単なクエリを実行してみて、

    WHERE DATE_FORMAT(d.OrderDate, '%Y%m') = '199607' 
    

    をあなたがEXTRACT()の古いバージョンを持っているかどうかをテストするには:

    SELECT EXTRACT(YEAR_MONTH FROM NOW()); 
    

    このエラーが出た場合は、その後、私のここでの一つの問題を回避するには、代わりにDATE_FORMAT()を使用することです推測は正しいです。

    関連する問題