1

次のテーブルがあります。

users: id, username, password, created, modified
posts: id, user_id, message, created, modified

今日作成された最後の 5 件の投稿 (および投稿者のユーザー名) を取得するクエリを実行しようとしています。次のクエリを実行すると:

SELECT users.username, posts.*
FROM postsLEFT OUTER JOIN users ON (posts.user_id=users.id)
WHERE (DATE(`posts.created`) = DATE(NOW()))
ORDER BY posts.created DESC
LIMIT 5

メッセージが表示されます:

「where句」の不明な列「posts.created」

クエリの他の部分の前に where が実行されることを理解しています。それで、私はこのクエリを試します:

SELECT users.username, posts.*
FROM postsLEFT OUTER JOIN users ON (posts.user_id=users.id)
WHERE (DATE(`created`) = DATE(NOW()))
ORDER BY posts.created DESC
LIMIT 5

しかしもちろん、私はメッセージを受け取ります:

where句の列が「作成されました」があいまいです


問題がないようにクエリを変更する方法について何か提案はありますか?

4

1 に答える 1

0

items.createdを引用符で囲むことにより、itemsテーブルから作成された列ではなく、「items.created」という名前の列として解釈されます。以下が機能するはずです。

SELECT users.username, items.*
FROM items LEFT OUTER JOIN users ON (items.user_id=users.id)
WHERE (DATE(items.created) = DATE(NOW()))
ORDER BY items.created DESC
LIMIT 5
于 2012-12-09T00:59:40.487 に答える