1

我需要检查条目是否已分类(查询 A)或条目是否与某些数据有关系(查询 B)。我想用一个查询而不是两个单独的查询来做到这一点。例如:

[if query A OR query B ]
   <p>Show this content</p>
[/if]

我有两个选择查询正常工作,但彼此独立。他们是:

查询一:

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 语句有很多关于 SO 的问题SELECT,但我正在寻求有关此特定查询的帮助,但没有找到任何与我自己的问题足够相似的问题。如果我无意中激怒了重复的问题上帝,我提前道歉。

4

1 回答 1

2

由于您的条目来自两个不同的表,并且据我了解您的请求,它不必同时存在于它们中,因此您需要使用FULL OUTER JOIN来执行此操作OR,这在 MySQL 中不受支持。

但是,您可以使用 aUNION来获得所需的结果:

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'
于 2012-09-27T18:24:19.450 回答