我需要检查条目是否被分类(查询A)或条目是否与某些数据有关(查询B)。我想用一个查询而不是两个单独的查询来做这个。例如:
[if query A OR query B ]
<p>Show this content</p>
[/if]
我有两个选择查询正常工作,但只是彼此独立。他们是:
查询A:
SELECT entry_id FROM exp_category_posts WHERE entry_id = '999' AND cat_id IN(SELECT cat_id FROM exp_categories WHERE group_id = '5') LIMIT 1
查询B:
SELECT entry_id FROM exp_matrix_data WHERE field_id = '19' AND col_id_7 <> '' AND entry_id = '999'
同样,我想将这两个查询组合成一个查询,检查条目999是否在某些类别中被分类(查询A)或与某些数据有关系(查询B)。这样做的最佳方式是什么?
如果有帮助,查询将在ExpressionEngine数据库上运行。
免责声明:我知道有很多关于如何组合MySQL SELECT
语句的问题,但我正在寻找这个特定查询的帮助,并没有发现任何类似于我自己的问题。如果我无意中激怒了重复的问题上帝,我会提前道歉。
答案 0 :(得分:2)
由于您的参赛作品来自两个不同的表格,并且据我了解您的要求,它们不一定存在,您需要FULL OUTER JOIN
才能使用OR
,这在MySQL中不受支持。
但是,您可以使用UNION
来获得所需的结果:
SELECT entry_id FROM exp_category_posts WHERE entry_id = '999' AND cat_id IN(SELECT cat_id FROM exp_categories WHERE group_id = '5') LIMIT 1
UNION DISTINCT
SELECT entry_id FROM exp_matrix_data WHERE field_id = '19' AND col_id_7 <> '' AND entry_id = '999'