SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 23.02.2010 15:12:20

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Многоуровневоя выборка данных

Есть 2-е таблицы, 1-я товар с основными характеристиками, 2- я с доп характеристиками
1-я таб вида
products
products_id -- category_id -- products_price
соответсвтенно
ИД продукта
ИД категории
Цена
2-я вида
zn
zn_id -- products_id -- type_id -- zn_name
соответственно
ИД
ИД продукта
ИД типа доп характеристики
ИД значения доп характеристики
(к примеру: Есть товар "Цветок" в Категории "Трям", доп характеристики Наличие на складе - да, гарантия - месяц)
Получаеться что в 2-й таблице на каждый товар есть по несколько записей. Теперь собственно сам вопрос: Как организовать поиск таким маневром что бы
а) была возможность одновременного поиска как по главным характеристикам (читай в 1-й таблице) так и по доп характеристикам - одновременно и по нескольким критериям (к примеру хочу товар из категории "Живность" с ценой ххх и что бы был на складе)
б) при этом нормально работал не создавая бешенную нагрузку на проц.
P.S. Из проделаного
Вариант 1.
Создал временную таблицу в которую после выборки с обоих таблиц вносяться данные и иет выборка уже с 1-й таблицы. Работает но ооочень долго так как таблицы большие
Вариант 2.
Объеденил через INNER JOIN. Работает частично.
Вариант 3.
Сделать через WHERE zn_name IN (21,50) показывать любой ИД имеющий хоть одно из значений
P.P.S. хелп

Неактивен

 

#2 23.02.2010 15:22:45

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

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

Неактивен

 

#3 23.02.2010 16:49:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Многоуровневоя выборка данных

Вариант 2 правильный smile Только прийдется объединять несколько раз:

SELECT … FROM table1 JOIN table2 t2_1 JOIN table2 t2_2
WHERE t2_1 = … AND t2_2 = …

Неактивен

 

#4 23.02.2010 16:57:39

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

где ошибка?
SELECT
    count(products.productID)
FROM
    products
    INNER JOIN zn ON (products.productID = zn.productID)
    INNER JOIN zn ON (products.productID = zn.productID)
WHERE
    products.categoryID = 2 AND
    zn.type_id = 10 AND
    zn.zn_name = 4    AND
    zn.type_id = 2 AND
    zn.zn_name = 37

Неактивен

 

#5 23.02.2010 17:01:23

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

как подключить?
если подключаю два раза таблица zn не уникальна
если как одна - то ничего не находит - так как поле не может одновременно иметь значение 10 и 2

Неактивен

 

#6 23.02.2010 17:11:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Многоуровневоя выборка данных

Да, к каждой таблице нужен свой алиас — так, как я написал в примере:

JOIN zn zn1 ON …
JOIN zn zn2 ON …

Неактивен

 

#7 23.02.2010 17:21:56

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

можно для одаренных как правильно? - а то показывает найденных 0
SELECT
    count(products.productID)
FROM
    products
    INNER JOIN zn zn1 ON (products.productID = zn1.productID)
    INNER JOIN zn zn2 ON (products.productID = zn2.productID)
WHERE
    products.categoryID = 2 AND
    zn1.type_id = 10 AND
    zn1.zn_name = 4    AND
    zn2.type_id = 2 AND
    zn2.zn_name = 37

Отредактированно Фдучфтвк (23.02.2010 17:23:10)

Неактивен

 

#8 23.02.2010 17:24:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Многоуровневоя выборка данных

Запрос правильный. А данные такие есть? smile

Неактивен

 

#9 23.02.2010 17:33:36

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

Данные есть, 2-а раза проверил

Неактивен

 

#10 23.02.2010 17:56:57

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

Это я поторопился, работает - сейчас попробую еще раз.
paulus - огромное спасибо

Неактивен

 

#11 23.02.2010 18:35:54

Фдучфтвк
Участник
Зарегистрирован: 23.02.2010
Сообщений: 8

Re: Многоуровневоя выборка данных

Все работает. еще раз псиб

Неактивен

 

Board footer

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