2010-07-07 36 views
6

Tôi đang cố gắng trả về kết quả MATCH() AGAINST() đối với một số bảng sử dụng UNIONS, vấn đề duy nhất là một số hàng trả về mức độ liên quan là 0, tôi muốn loại trừ chúng. Sau khi đoàn là có một cách để sử dụng 'WHERE liên quan> 0'Sử dụng mệnh đề WHERE tổng thể khi sử dụng UNIONS trong sql

Dưới đây là một chút của SQL của tôi

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 

Vì vậy, là có anyway tôi có thể thêm ĐÂU liên quan> 0 trước khi ORDER BY

cảm ơn nhiều

Trả lời

4

Hãy thử sử dụng một bảng có nguồn gốc

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

Hum. Cần lưu ý rằng câu hỏi ban đầu của ông cho biết 'loại trừ các trường hợp có mức độ liên quan là 0' nhưng mệnh đề psuedo của nó nói '> 0'. Chỉ cần một lưu ý –

+0

Điều đó làm việc xuất sắc, cảm ơn bạn rất nhiều – wiggles

2

bạn có thể thêm i t cho mỗi truy vấn hoặc ở cuối:

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 
Các vấn đề liên quan