次のクエリでposts
テーブルから結果を取得したいとします。私は、文のどこの部分が合格しているのかを選択したいと思う。用語のタイプがカテゴリで、CategoryTestにクエリでグループ化された場所で結果を取得するには
ある用語のタイプがタグで、TagTestに
WHERE IN
条件でWHERE
現在、一つの要素が含まれているが、より多くの可能性があります。 両方ともWHERE
は、他方が提示されない場合に結果を与える。 それぞれが単独で、またはOR
と一緒に働くので、動作します。それはID 33で同じポストを返すので、WHEREグループは正しく設定されていないと思います。
SELECT `posts`.*
FROM `posts`
LEFT JOIN `post_term` ON `posts`.`id` = `post_term`.`post_id`
LEFT JOIN `terms` ON `terms`.`id`= `post_term`.`term_id`
LEFT JOIN `meta` ON `meta`.`post_id` = `posts`.`id`
WHERE (
`terms`.`type` = 'category'
AND `terms`.`name` IN('CategoryTest')
)
AND (
`terms`.`type` = 'tag'
AND `terms`.`name` IN('TagTest')
)
表の定義: 規約テーブル +----+--------------+--------------+----------+ | id | name | slug | type | +----+--------------+--------------+----------+ | 31 | CategoryTest | CategoryTest | category | | 32 | TagTest | TagTest | tag | +----+--------------+--------------+----------+
投稿表: +----+-------+---------+---------+-----------+------------+------------+ | id | title | content | user_id | parent_id | created_at | updated_at | +----+-------+---------+---------+-----------+------------+------------+ | 33 | HEllo | | 0 | 0 | NULL | NULL | +----+-------+---------+---------+-----------+------------+------------+
post_term +----+---------+---------+ | id | post_id | term_id | +----+---------+---------+ | 73 | 33 | 31 | | 74 | 33 | 32 | +----+---------+---------+
「OR」と表示されます。なぜそれを使用しないのですか? –
用語テーブルの定義を表示できますか?より良いサンプルデータがありますか – Mihai
どちらか一方の条件だけでなく両方の条件が合致する結果を取得したいと考えています。 – Iamzozo