![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте! Помогите пожалуйста правильно сформулировать запрос из плагина поиска Virtuemart 2.0 , скрипта интернет магазина
Задача такая, организовать поиск по ОПИСАНИЮ категорий ... с выдачей я справлюсь...
Вообщем что имею.
# Выбираем уникальное значение и объединяем столбцы CONCAT(a.product_name, a.product_sku, b.category_name) для вывода как заголовка - TITLE
SELECT DISTINCT CONCAT( a.product_name,' (',a.product_sku,'),(',b.category_name,')' ) AS title,
# Дальше забираем id товара и id категории для формирования ссылки на товар|категорию после выдачи
a.virtuemart_product_id , b.virtuemart_category_id,
# Объединяем столбцы CONCAT(a.product_s_desc, b.category_description) для вывода как описание - TEXT, b.category_name as section - как дополнительная ссылка после выдачи
CONCAT( a.product_s_desc,' (',b.category_description,')' ) AS text, b.category_name as section,
# Выбераем дату создания страницы и макет представления
a.created_on as created, '2' AS browsernav
# Выбераем все из qd6ei_virtuemart_products и представляем под псевдонимом a.
FROM qd6ei_virtuemart_products AS a
# Присоединяем таблицу с со связями товар-категория и ставим под псевдоним xref где приравнивается связь id товаров
LEFT JOIN qd6ei_virtuemart_product_categories AS xref ON xref.virtuemart_product_id = a.virtuemart_product_id
# Присоединяем таблицу с категориями и ставим под псевдоним b. где сравнивается связь id категорий
LEFT JOIN qd6ei_virtuemart_categories AS b ON b.virtuemart_category_id = xref.virtuemart_category_id
# Где описание категории по шаблону соответсятвует слову '%Колумб%'... и сортируем по имени категории
WHERE b.category_description LIKE '%Колумб%' ORDER BY b.category_name DESC;И чистый
SELECT DISTINCT CONCAT( a.product_name,' (',a.product_sku,'),(',b.category_name,')' ) AS title, a.virtuemart_product_id , b.virtuemart_category_id, CONCAT( a.product_s_desc,' (',b.category_description,')' ) AS text, b.category_name as section,a.created_on as created, '2' AS browsernav
FROM qd6ei_virtuemart_products AS a
LEFT JOIN qd6ei_virtuemart_product_categories AS xref ON xref.virtuemart_product_id = a.virtuemart_product_id
LEFT JOIN qd6ei_virtuemart_categories AS b ON b.virtuemart_category_id = xref.virtuemart_category_id
WHERE b.category_description LIKE '%Колумб%' ORDER BY b.category_name DESC;Объясню что слово в шаблоне LIKE '%Колумб%' точно есть в category_description!
Поле без каких либо ключей с типом text. Но результат 0 записей
где копать?
Неактивен

1. Что возвращает
select count(*) from qd6ei_virtuemart_categories b WHERE b.category_description LIKE '%Колумб%';
2. А действительно ли есть товары соответствующие категории с описанием '%Колумб%'? Т.е. ситуация - категория есть, а товаров ей соответствующих нет, поэтому и запрос на поиск товаров возвращает о строк.
Неактивен
Возвращает
COUNT(*) 7
А нужно организовать по условию , если в описании товара нет, то в описание категории смотрим
Неактивен

Вы не ответили на второй вопрос.
Неактивен
Даже если в описании товаров нет , то нужно выводить категории с описанием в которых есть %Колумб%
В категории есть описание.
Неактивен

Так это разные случаи и одном запросом задачу не решить.
Сначала проверяете наличие товаров, если возвращает 0, то смотрите в категориях.
Неактивен
Нужно одним запросом, возможно ли в SQL сделать вложеный запрос на проверку?
Неактивен

Можно, но это будет извращение, которое будет медленно работать.
Сделайте в виде процедуры, тогда у вас будет один запрос - вызов процедуры.
Неактивен
vasya написал:
Можно, но это будет извращение, которое будет медленно работать.
Сделайте в виде процедуры, тогда у вас будет один запрос - вызов процедуры.
Я не знаком с такими методами, где можно узнать о процедурах?
Неактивен

Неактивен
Страниц: 1