SQLite を使用して、多対多の関係 (tag-tags-post) でテーブルの行のサブセットをカウントしたいと思います。次のSQLを試してみましたが、うまくいきませんでした:
SELECT tag.*, count(post.id)
FROM tag
JOIN tags
ON tag.id = tags.tag_id
JOIN post
ON post.id = tags.post_id
AND datetime(post.published) < datetime('2012-08-08 12:42:41.696451')
GROUP BY tag.id, tag.name, tag.description, tag.slug
ORDER BY tag.name
条件をWHERE
句に移動しようとしましたが、何も変わりません。条件がなければ、結果は期待どおりに表示されます。
編集1
明確に言うと、AND
条件を削除することで、期待どおりのすべての行がありますが、結果が得られますpost
。さらに、次のクエリ
SELECT count(post.id)
FROM post
WHERE datetime(post.published) < datetime('2012-08-08 12:42:41.696451')
正しい結果を提供します。
編集2
タグ テーブルにデータ入力エラーがありました。クエリは正常に機能するようになりました。皆様にお詫び申し上げます。削除に投票しました。