SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.12.2011 18:39:31

Stanisov
Участник
Зарегистрирован: 26.12.2011
Сообщений: 5

Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

Здравствуйте! Помогите пожалуйста правильно сформулировать запрос из плагина поиска 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 записей sad где копать?


Прикрепленные файлы:
Attachment Icon qd6ei_virtuemart_categories(2).sql, Размер: 130,715 байт, Скачано: 595

Неактивен

 

#2 26.12.2011 21:02:38

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

1. Что возвращает
select count(*) from qd6ei_virtuemart_categories b WHERE b.category_description LIKE '%Колумб%';

2. А действительно ли есть товары соответствующие категории с описанием '%Колумб%'? Т.е. ситуация - категория есть, а товаров ей соответствующих нет, поэтому и запрос на поиск товаров возвращает о строк.

Неактивен

 

#3 27.12.2011 12:24:16

Stanisov
Участник
Зарегистрирован: 26.12.2011
Сообщений: 5

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

Возвращает

Код:

COUNT(*)
7

А нужно организовать по условию , если в описании товара нет, то в описание категории смотрим

Неактивен

 

#4 27.12.2011 13:16:25

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

Вы не ответили на второй вопрос.

Неактивен

 

#5 27.12.2011 13:55:33

Stanisov
Участник
Зарегистрирован: 26.12.2011
Сообщений: 5

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

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

Неактивен

 

#6 27.12.2011 14:32:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

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

Неактивен

 

#7 27.12.2011 16:31:29

Stanisov
Участник
Зарегистрирован: 26.12.2011
Сообщений: 5

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

Нужно одним запросом, возможно ли в SQL сделать вложеный запрос на проверку?

Неактивен

 

#8 27.12.2011 17:09:02

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

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

Неактивен

 

#9 27.12.2011 19:17:31

Stanisov
Участник
Зарегистрирован: 26.12.2011
Сообщений: 5

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

vasya написал:

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

Я не знаком с такими методами, где можно узнать о процедурах?

Неактивен

 

#10 27.12.2011 23:44:12

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите организовать сложную выборку SELECT CONCAT JOIN из таблиц

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson