Mysql поисковый запрос два столбца - PullRequest
1 голос
/ 04 марта 2012

У меня есть функция поиска для моего веб-сайта, и я хочу выполнить поиск по двум столбцам: заголовок и автор.

Запрос:

SELECT title, bookID, publisher, pubDate, book_image, books.authorID, authors.author FROM books, authors WHERE books.authorID = authors.authorID 
            AND title LIKE '$queryString%' OR author LIKE '$queryString%'LIMIT 5

При поиске по названию это работаетхорошо, но когда я ищу по автору, я получаю список всех книг с искомым автором в качестве автора.Очевидно, это неверно.

Как я могу исправить этот запрос, чтобы успешно выполнить поиск по названию или автору?

Ответы [ 3 ]

2 голосов
/ 04 марта 2012

Попробуйте ниже:

SELECT title, bookID, publisher, pubDate, book_image, books.authorID, authors.author 
FROM books left join  authors on  books.authorID = authors.authorID 
WHERE (title LIKE '$queryString%' OR author LIKE '$queryString%') LIMIT 5

Я хотел бы предложить вам использовать полный текст поиск в MySQL. Это будет быстрее и эффективнее

0 голосов
/ 04 марта 2012

Попробуйте:

SELECT bk.title, bk.bookID, bk.publisher, bk.pubDate, bk.book_image, bk.authorID, au.author
FROM books bk,  authors au
WHERE bk.authorID = au.authorID AND bk.title LIKE '$queryString%' OR au.author LIKE '$queryString%' LIMIT 5
0 голосов
/ 04 марта 2012
SELECT title, bookID, publisher, pubDate, book_image, books.authorID, authors.author 
FROM books, authors 
WHERE books.authorID = authors.authorID 
        AND (title LIKE '$queryString%' OR author LIKE '$queryString%')LIMIT 5

это должно сделать работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...