Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 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