2016-06-21 4 views
0

У меня есть серьезная проблема, что я хочу решений.Извлечение записей сингулярных и pural-мудрый в varchar и текстовый тип данных в mysql

Я хочу получить записи из базы данных. Например: когда я ищу Карандаши, тогда я получу 4 записи, и когда я буду искать Карандаш, тогда я получу 15 записей. Но я хочу 15 записей, если их искали Карандаши или Карандаш.

Это MySQL запросов:

SELECT DISTINCT 
    gc_products.name, 
    gc_products.*, 
    LEAST(IFNULL(NULLIF(saleprice, 0), price), 
      price) AS sort_price 
FROM 
    (`gc_products`) 
     JOIN 
    `gc_group_product` ON `gc_group_product`.`product_id` = `gc_products`.`id` 
     JOIN 
    `gc_category_products` ON `gc_category_products`.`product_id` = `gc_products`.`id` 
     JOIN 
    `gc_categories` ON `gc_categories`.`id` = `gc_category_products`.`category_id` 
WHERE 
    `gc_products`.`enabled` = 1 
     AND `gc_group_product`.`group_id` = 5 
     AND (gc_products.name LIKE '%pencils%' 
     OR gc_products.description LIKE '%pencils%' 
     OR gc_products.excerpt LIKE '%pencils%' 
     OR gc_products.sku LIKE '%pencils%') 
     OR (gc_categories.name LIKE '%pencils%' 
     OR gc_categories.excerpt LIKE '%pencils%'); 

Я надеюсь, что я получу ответ

Благодарности

+0

Вы показали нам запрос для 'карандашей', но как насчет' карандаша'? –

+0

Вы можете удалить "s" из ключевого слова, которое мы хотим найти –

+0

Возможно, вы ищете [полнотекстовый поиск] (http://dev.mysql.com/doc/refman/5.7/en/fulltext-search .html)? –

ответ

0

Пожалуйста, проверьте, работает ли это

SELECT DISTINCT 
gc_products.name, 
gc_products.*, 
LEAST(IFNULL(NULLIF(saleprice, 0), price), 
     price) AS sort_price 

ОТ (gc_products) JOIN gc_group_product ON gc_group_product. product_id = gc_products. id JOIN gc_category_products ON gc_category_products. product_id = gc_products. id JOIN gc_categories ON gc_categories. id = gc_category_products. category_id WHERE gc_products. enabled = 1 И gc_group_product. group_id = 5 И (gc_products.name LIKE CONCAT ('%', TRIM (TRAILING BINARY ('s') FROM 'pencils'), '%') ИЛИ gc_products.description LIKE CONCAT ('%', TRIM (TRAILING BINARY ('s') FROM 'карандаши'), '%') ИЛИ gc_products.excerpt LIKE CONCAT ('%', TRIM (TRAILING BINARY ('s') FROM 'pencils'), '%') ИЛИ gc_products.sku LIKE CONCAT ('%', TRIM (TRAILING BINARY ('s') FROM 'pencils'), '%')) OR (gc_categories.name LIKE CONCAT ('%', TRIM (TRAILING BINARY ('s') FROM ' карандаши '),'% ') ИЛИ gc_categories.excerpt LIKE CONCAT ('% ', TRIM (TRAILING BINARY (' s ') FROM' pencils '),'% '));

+0

Здравствуйте, В соответствии с вашим запросом sql ... 's' будет удален из карандашей, но я уже использовал эту логику в php. Если у вас есть логика, то, пожалуйста, дайте мне. Спасибо, что опубликовали этот ответ ... –