2010-07-07 6 views
6

में यूनियनों का उपयोग करते समय एक समग्र WHERE खंड का उपयोग करके मैं यूनियन का उपयोग करके कई तालिकाओं के खिलाफ MATCH() AGAINST() परिणामों को वापस करने की कोशिश कर रहा हूं, केवल समस्या यह है कि कुछ पंक्तियां 0 की प्रासंगिकता लौटाती हैं, मैं इन्हें बाहर करना चाहता हूं। यूनियनों के बाद वहाँ का उपयोग करने के लिए एक तरह से 'कहां प्रासंगिकता> 0'एसक्यूएल

नीचे मेरी एसक्यूएल का एक सा

SELECT pages.content AS search, page_info.url AS link, MATCH(pages.content) AGAINST('Wales') as relevance 
FROM page_content 
LEFT JOIN pages ON (page_info.page = pages.id) 

UNION 

SELECT products_real.name AS search, products_real.event AS link, MATCH(products_real.name, products_real.description) AGAINST ('Wales') as relevance 
FROM product_real 

ORDER BY relevance DESC 

तो वहाँ वैसे भी मैं

द्वारा जहां प्रासंगिकता> 0 आदेश से पहले जोड़ सकते हैं है

बहुत धन्यवाद

उत्तर

4

एक व्युत्पन्न तालिका

SELECT * 
FROM 
    (SELECT 
    pages.content AS search, 
    page_info.url AS link, 
    MATCH(pages.content) AGAINST('Wales') as relevance 
    FROM page_content 
    LEFT JOIN pages ON (page_info.page = pages.id) 
    UNION 
    SELECT 
    products_real.name AS search, 
    products_real.event AS link, 
    MATCH(products_real.name, products_real.description) AGAINST ('Wales') as relevance 
    FROM product_real) myQuery 
Where myQuery.relevance <> 0 
ORDER BY myQuery.relevance DESC 
उपयोग करने का प्रयास
+0

हम। यह ध्यान दिया जाना चाहिए कि उनके मूल प्रश्न में कहा गया है कि 'प्रासंगिकताएं 0 हैं जहां प्रासंगिकता 0 है' लेकिन उनके psuedo जहां खंड '> 0' कहता है। बस एक नोट –

+0

जो उत्कृष्टता से काम करता है, बहुत बहुत धन्यवाद – wiggles

2

आप मैं जोड़ सकता है प्रत्येक क्वेरी के लिए या अंत में:

SELECT pages.content AS search, page_info.url AS link, MATCH(pages.content) AGAINST('Wales') as relevance 
FROM page_content 
LEFT JOIN pages ON (page_info.page = pages.id) 
WHERE relevance > 0 

UNION 

SELECT products_real.name AS search, products_real.event AS link, MATCH(products_real.name, products_real.description) AGAINST ('Wales') as relevance 
FROM product_real 
WHERE relevance > 0 

ORDER BY relevance DESC 



SELECT search, relevance FROM 
(

SELECT pages.content AS search, page_info.url AS link, MATCH(pages.content) AGAINST('Wales') as relevance 
FROM page_content 
LEFT JOIN pages ON (page_info.page = pages.id) 

UNION 

SELECT products_real.name AS search, products_real.event AS link, MATCH(products_real.name, products_real.description) AGAINST ('Wales') as relevance 
FROM product_real 
) D 
WHERE relevance > 0 
ORDER BY relevance DESC