1

私は次の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います。構文が明らかに間違っていますが、ここからどこに行けばよいかわかりません。ヘルプに感謝します。

4

1 に答える 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

ただし、一般的には、読みやすくするために、そのような名前は避けます。引用したりエスケープしたりする必要がある場合は、おそらく悪い名前です。

于 2012-09-24T22:47:28.220 に答える