2017-05-28 11 views
-1

私はこのクエリを持っている:INNER JOINクエリの実行方法

SELECT o.Date, 
    CONCAT (c.FirstName, '', c.LastName), 
    c.StreetAddress, 
    c.Apt, 
    c.City, 
    c.State, 
    c.ZipCode, 
    c.HomePhone, 
    c.MobilePhone, 
    c.OtherPhone, 
    i.Quantity, 
    d.DonutName, 
    d.Description, 
    d.UnitPrice, 
    o.Notes, 
FROM Customer AS c, 
    DonutOrder AS o, 
    OrderLineItem AS i, 
    Donut AS d 
INNER JOIN DonutOrder AS o ON c.CustomerID = o.CustomerID 
INNER JOIN Donut AS d ON o.DonutOrderID = i.DonutOrderID 
INNER JOIN OrderLineItem AS i ON d.DonutID = i.DonutID 
; 

私はこのエラーが表示されます。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Customer AS c, DonutOrder AS o, OrderLineItem AS i, Donut AS d INN' at line 16.

間違っていますか?ここで

私のSQLフィドルページへのリンクです:あなたはいくつかの問題持ってhttp://sqlfiddle.com/#!9/a2842/7

答えて

1

  • をエラーがselectリストの末尾のカンマについてです:最後のフィールドは続くべきではありませんカンマ
  • from句は、あなたが意図していない限り、テーブルを2度記述するべきではありません。しかしこの場合、のみは、カンマで区切られたリストではなくinner joinを使用します。
  • 最後の2つの結合テーブルの結合条件をもう一方の結合に移動する(スワップする)
  • selectリストの最初のフィールドは存在しません。 o.OrderDate
  • あなたのフィドルでは、OrderLineItemテーブルにデータが存在しないため、訂正してもクエリが行を返さないようにします。ここで

修正バージョンです:

SELECT o.OrderDate, 
    CONCAT (c.FirstName, '', c.LastName), 
    c.StreetAddress, 
    c.Apt, 
    c.City, 
    c.State, 
    c.ZipCode, 
    c.HomePhone, 
    c.MobilePhone, 
    c.OtherPhone, 
    i.Quantity, 
    d.DonutName, 
    d.Description, 
    d.UnitPrice, 
    o.Notes 
FROM Customer AS c 
INNER JOIN DonutOrder AS o ON c.CustomerID = o.CustomerID 
INNER JOIN OrderLineItem AS i ON o.DonutOrderID = i.DonutOrderID 
INNER JOIN Donut AS d ON d.DonutID = i.DonutID 
; 

http://sqlfiddle.com/#!9/a2842/15

+0

はい、私は受注日を意味しました!私の選択の最後に余分なカンマに気づいてくれてありがとう。私はOrderLineItemテーブルのデータがないとは思わなかった。だからそれはクエリでは必要ではない? –

+0

これは、出力に必要なものによって異なります。今度は、OrderLineItemテーブルから数量を選択するため、データが必要になります。それは、そこにデータがない場合に出力するものに依存します。たぶんあなたは外部の参加をしたいと思うかもしれません...あなたが決定するために。 – trincot

+0

OrderLineItemとそのステートメントをすべて削除して、Select文にDonutIDとDonutOrderIDを追加しました。エラーが発生しました: 'on clause'の 'c.CustomerID'が不明です –