過去数日間、この問題を解決しようとしていますが、助けていただければ幸いです。
taxonomy1 に term1 と taksonomy2 に term2 を持つ Return アイテムがあります。
これは私のクエリです:
SELECT items.*
FROM (`items`)
LEFT JOIN `rel_taxonomy` ON `rel_taxonomy`.`item_id` = `items`.`id`
LEFT JOIN `terms_taxonomy` ON `terms_taxonomy`.`terms_taxonomy_id` = `rel_taxonomy`.`terms_taxonomy_id`
LEFT JOIN `terms` ON `term`.`id` = `terms_taxonomy`.`term_id`
WHERE (items.org = '2') AND ( ((terms_taxonomy.taxonomy = '1') AND (term.pojam LIKE '%term1%')) AND ((terms_taxonomy.taxonomy = '2') AND (term.pojam LIKE '%term2%')))
GROUP BY `items`.`id`
行を置き換えると:
WHERE (items.org = '2') AND ( ((terms_taxonomy.taxonomy = '1') AND (term.pojam LIKE '%term1%')) AND ((terms_taxonomy.taxonomy = '2') AND (term.pojam LIKE '%term2%')))
次のように (AND を OR に置き換えます):
WHERE (items.org = '2') AND ( ((terms_taxonomy.taxonomy = '1') AND (term.pojam LIKE '%term1%')) OR((terms_taxonomy.taxonomy = '2') AND (term.pojam LIKE '%term2%')))
すべて正常に動作します。しかし、まだ AND が必要です。
テーブルスキーム
items
id | title | org
rel_taxonomy
item_id | terms_taxonomy_id
terms_taxonomy
terms_taxonomy_id | terms_id | taxsonomy
terms
id | term
だから私はタクソノミー1にターム1とタクソノミー2にターム2を持つアイテムを取得しようとしています。