私は次のSQL文を持っています
SELECT be.*, it.order_number
FROM songs AS be
INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id
INNER JOIN orders AS or
ON it.order_number = or.order_number
WHERE be.active = 0
なぜこの文が結果をもたらさないのか分かりません。次の行を削除すると、
INNER JOIN orders AS or
ON it.order_number = or.order_number
結果が出るようですが、 order_number
は、 orders
テーブル - それは明らかに構文が間違っていますが、ここからどこに行くのか分かりません。ヘルプをよろしくお願いいたします。
回答:
回答№1は1この特定の例における問題は、 or
クエリの中には予約語があります。あなたが望むならそれを使うことができますが、そういう言葉を引用する必要があります
SELECT be.*, it.order_number
FROM songs AS be
INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id
INNER JOIN orders AS "or"
ON it.order_number = "or".order_number
WHERE be.active = 0
一般的には、読みやすくするために、そのような名前は避けてください。引用するかエスケープする必要がある場合は、おそらく悪い名前です。