У меня есть следующие таблицы:
user
user_id | name
1 W
2 x
3 Y
4 Z
author
auth_id | name
1 M
2 N
3 O
4 P
preferred_author
user_id | auth_id
1 2
1 3
1 4
2 1
book
book_id | title
1 Hello world 01
2 Hello world 02
3 Hello world 03
4 Hello world 04
5 Hello world
book_author
book_id | auth_id
1 2
2 3
3 4
4 1
Теперь, когда пользователь W
ищет книгу с именем hello world
, я хочу показать книги, которые являются предпочтительным автором пользователя, сначала, а затем другие результаты.в соответствии с актуальностью.Я попробовал selecting all the ids of preferred authors and saved in a php array
PHP:
Say, $p_auth_ids = (2, 3, 4);
Затем я запустил запрос для поиска:
$query = "SELECT b.book_id, b.title,
MATCH(b.title) AGAINST("hello world" IN BOOLEAN MODE) AS relevance
FROM book AS b
INNER JOIN book_author AS ba ON b.book_id=ba.book_id
WHERE ba.auth_id IN ('".$p_auth_ids."')
AND
MATCH(b.title) AGAINST("hello world" IN BOOLEAN MODE)
ORDER BY relevance DESC"
Вывод должен быть:
book_id | title
1 Hello world 01
2 Hello world 02
3 Hello world 03
5 Hello world
4 Hello world 04
Не работает.Так какой должен быть запрос на то, что я хочу?Спасибо.