2012-09-27 106 views
1

我需要检查一个条目是否被分类(查询A)或者条目是否与某些数据(查询B)有关系。我想用一个查询而不是两个单独的查询来做到这一点。例如:特定的MySQL查询:结合两个MYSQL选择语句或

[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 SELECT声明有很多问题,但我正在寻找关于此特定查询的帮助,并且没有发现任何类似于我自己的问题。如果我无意中激怒了重复的问题神,我很抱歉。

+0

你只使用'LIMIT 1'的查询之一,是故意的吗? – RedFilter

+0

@RedFilter,是的 - 因为一个条目可以分配多个类别,我只想检查条目是否在其中一个中 - 尽管我想我可以将LIMIT限制添加到第二个查询中以及。 –

回答

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' 
+0

谢谢 - 完美的作品。我喜欢这样:) –