2016-08-05 7 views
0

私は、sql、asp.netを使用してOrderItemテーブルから最新の日付を取得しようとしています。私はプログラムを実行するときしかし、彼らはこのエラーを示します。 Incorrect syntax near the keyword 'from'.sqlのテーブルの列から最新の日付を取得するには?

ここに私のコードは次のとおりです。

string strconnect = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
    SqlConnection myConnect = new SqlConnection(strconnect); 

    string command = " 
     Select OrderItem.ProductID, Product.Name, OrderItem.TotalQty, Product.UnitPrice, OrderItem.TotalPrice 
     FROM OrderItem 
     INNER JOIN Product ON OrderItem.ProductID=Product.ProductID 
     WHERE OrderDate = MAX(OrderDate) from OrderItem"; 
    SqlCommand cmd = new SqlCommand(command, myConnect); 

    myConnect.Open(); 

    SqlDataReader reader = cmd.ExecuteReader(); 

    GridView1.DataSource = reader; 
    GridView1.DataBind(); 
    reader.Close(); 
    myConnect.Close(); 

教えてください!

答えて

0

FROM句で指定したWHERE条件の "OrderItemから"を削除する必要があります。

SELECT 
    i.ProductID, 
    p.Name, 
    i.TotalQty, 
    p.UnitPrice, 
    i.TotalPrice 
FROM 
    OrderItem i 
     INNER JOIN Product p 
      ON i.ProductID = p.ProductID 
WHERE 
    i.OrderDate = (SELECT MAX(OrderDate) 
        FROM OrderItem 
        WHERE OrderItem.ProductID = i.ProductID) 
+0

誤差は、発生しました: 'それはHAVING句またはこれもSQLが無効である最良の答えであるなぜ選択list.' –

+0

に含まれるサブクエリでない限り、集合体がWHERE句に表示されない場合があります? – SIDU

0
SELECT o.ProductID, p.Name, o.TotalQty, p.UnitPrice, o.TotalPrice 
FROM OrderItem AS o 
INNER JOIN Product AS p ON o.ProductID = p.ProductID 
ORDER BY o.OrderDate DESC 
LIMIT 1 

ああ、あなたはSQLサーバを使用している、これを試してみてください(ただしテストされていません)

SELECT TOP 1 o.ProductID, p.Name, o.TotalQty, p.UnitPrice, o.TotalPrice 
FROM OrderItem AS o 
INNER JOIN Product AS p ON o.ProductID = p.ProductID 
ORDER BY o.OrderDate DESC 
+0

エラーが発生しました: 'LIMIT'付近の構文が正しくありません。 ' –

0

それは注文日のデータ型が何であるかに依存します。変数のデータ型を変更するか、切り捨てを適用する必要があります。

declare @MaxOrderDate datetime 
select @MaxOrderDate = MAX(OrderItem.OrderDate) from OrderItem 

Select 
    OrderItem.ProductID, 
    Product.Name, 
    OrderItem.TotalQty, 
    Product.UnitPrice, 
    OrderItem.TotalPrice 
FROM 
    OrderItem 
     INNER JOIN Product 
      ON OrderItem.ProductID=Product.ProductID 
WHERE 
    OrderItem.OrderDate = @MaxOrderDate 
0

WHERE句でサブクエリを変更する必要があります。

SELECT OrderItem.ProductID, Product.Name, OrderItem.TotalQty, Product.UnitPrice, OrderItem.TotalPrice 
FROM OrderItem 
INNER JOIN Product ON OrderItem.ProductID=Product.ProductID 
WHERE OrderDate = (SELECT MAX(OrderDate) FROM OrderItem); 
+0

ようこそ!私はあなたの質問を編集しました。質問に答えるときは、コードとその問題の解決方法について少し説明することをお勧めします。あなたが私の編集に同意しない場合、あなたはそれを元に戻すことができます。編集を巻き戻すには、私のアバター画像の上の「編集済み...前」をクリックしてください。編集履歴に移動します。編集履歴には、ロールバックリンクがあります。 –

+1

提案してくれてありがとう。次回は自分の答えを改善する。 – Reshma

関連する問題