2012-09-27 134 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

謝謝 - 完美的作品。我喜歡這樣:) –