0

このMySQLクエリがありますが、実行しようとするとエラーが発生するようです。私は初心者なので、それを修正するために何をすべきかについてアドバイスをお願いします。1つ以上の保留中の製品がある注文の名前、数量、注文日を表示したいだけです。どうもありがとう!

select product.name, order_details.quantity, order.date from product,order_details,order 
inner join order on order_details.order_id=order.id 
inner join product on order_details.product_id=product.id 
inner join customer on order.cust_id=costumer.id WHERE order.pending=>1
4

3 に答える 3

2

orderというテーブルがあります。この単語は、SQL では特別な意味を持ちます。オプションは、テーブルの名前を変更するか、クエリを実行するたびに引用することです。

最も簡単な解決策は、変更することです。

inner join order ....

inner join `order`

テーブル名は必ずバッククォートで囲んでください。

于 2013-01-09T11:14:47.527 に答える
0

次のようなものを試すことができます:

SELECT product.name, order_details.quantity, `order`.date
FROM product
INNER JOIN order_details ON product.id = order_detail.product_id
INNER JOIN `order` ON `order`.id = order_detail.order_id
WHERE `order`.pending >= 1

他の回答で述べたようにorder、SQL の予約済みキーワードであり、逆引用符で囲みます。

フィールドをインクリメント/デクリメントする代わりに、まだ保留中の製品を追跡するためにpending、テーブルに情報を保存する必要があります (保留中の場合は 1、そうでない場合は 0)。order_detailorder.pending

この場合、次のクエリを作成できます。

SELECT product.name, order_details.quantity, `order`.date
FROM product
INNER JOIN order_details ON product.id = order_detail.product_id
INNER JOIN `order` ON `order`.id = order_detail.order_id
WHERE `order_detail`.pending = 1

おそらく1つだけが保留中の注文からのすべての製品ではなく、注文でまだ保留中のすべての製品を返します。

于 2013-01-09T11:19:39.990 に答える
0

SQL の予約語である「order」という名前のテーブルがあります。

1 つの解決策は、 Craic Computing ブログで説明されているように、テーブル名の前にデータベース名を付けることです。別の解決策は、この StackOverflow の質問で 読めるように、テーブル名を ` 文字で囲むことです。

于 2013-01-09T11:14:56.073 に答える