Полнотекстовый поиск, который фильтрует результаты по значению других столбцов таблицы - PullRequest
0 голосов
/ 28 апреля 2020

Я ищу в таблице (t1), где каждая запись связана с t2. Но нужны только результаты из t1, связанные с t2 (где t2.rel_mag = '2')

Я не могу заставить это

AND t2.rel_mag = '2' AND rel_active = '1' 

работать в следующем запросе, который теперь выдает все результаты, а не только из: t2.rel_mag = '2'

SELECT t1.relID as relID,+ more columns,
( (1.3 * (MATCH(mag_title) AGAINST ('$_GET[search]%' IN BOOLEAN MODE))) 
+ (0.6 * (MATCH(mag_webheader) AGAINST ('%$_GET[search]%' IN BOOLEAN MODE))) ) 
AS relevance FROM t1 
LEFT JOIN t2 ON t1.relnr=t2.relid 
WHERE ( MATCH(mag_title,mag_webheader) AGAINST ('$_GET[search]%' IN BOOLEAN MODE) ) 
HAVING relevance > 0  
ORDER BY relevance DESC LIMIT 0,15

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 29 апреля 2020

Предполагая, что rel_active принадлежит t2

, добавьте оба к объединению, чтобы был выбран один t2, соответствующий обоим значениям

SELECT t1.relID as relID,+ more columns,
( (1.3 * (MATCH(mag_title) AGAINST ('$_GET[search]%' IN BOOLEAN MODE))) 
+ (0.6 * (MATCH(mag_webheader) AGAINST ('%$_GET[search]%' IN BOOLEAN MODE))) ) 
AS relevance FROM t1 
LEFT JOIN t2 ON t1.relnr=t2.relid AND t2.rel_mag = '2' AND t2.rel_active = '1' 
WHERE ( MATCH(mag_title,mag_webheader) AGAINST ('$_GET[search]%' IN BOOLEAN MODE) ) 
HAVING relevance > 0  
ORDER BY relevance DESC LIMIT 0,15
...