Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2017, 17:53   #1
Владair
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 2
По умолчанию Выборка с AND

Доброго вечера, сразу скажу в SQL я не мастер, столкнулся с проблемой решить не получается
Реализую что то вроде EAV, не могу сделать выборку с использованием AND

Есть четеры таблички

Product (ее описывать не буду, много полей)
Option:

id
name
alias
filter
sort
unit_id

Option Product:

id
option_id
option_value_id
product_id
quantity

Option Value:

id
option_id
value
alias
filter
sort

Собстсвенно задачи сделать выборку продутка по нескольким аттрибутам, например товар имеющий цвет зеленый и размер 16
Имею следующий запрос, но получаю NULL

SELECT `product`.* FROM `product`

LEFT JOIN `option_product` ON `product`.`id` = `option_product`.`product_id`

LEFT JOIN `option_value` `option_values1` ON `option_product`.`option_value_id` = `option_values1`.`id`
LEFT JOIN `option` `option_name1` ON `option_values1`.`option_id` = `option_name1`.`id`

LEFT JOIN `option_value` `option_values2` ON `option_product`.`option_value_id` = `option_values2`.`id`
LEFT JOIN `option` `option_name2` ON `option_values2`.`option_id` = `option_name2`.`id`

LEFT JOIN `option_value` `option_values3` ON `option_product`.`option_value_id` = `option_values3`.`id`
LEFT JOIN `option` `option_name3` ON `option_values3`.`option_id` = `option_name3`.`id`

WHERE (`product`.`category_id` IN (1, 3, 5, 6, 4, 7, 8))

AND ((`option_name1`.`alias`='size') AND (`option_values1`.`alias`='16'))
AND ((`option_name2`.`alias`='color') AND (`option_values2`.`alias`='green'))
AND ((`option_name3`.`alias`='diam') AND (`option_values3`.`alias`='20'))

Подсобите советом )
Владair вне форума Ответить с цитированием
Старый 12.04.2017, 18:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Одно из условий не выполняется
Цитата:
например товар имеющий цвет зеленый и размер 16
а diam при чем, если только цвет и размер,
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2017, 19:01   #3
Владair
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 2
По умолчанию

diam - еще один параметер (такой же как цвет и размер)
Владair вне форума Ответить с цитированием
Старый 13.04.2017, 21:38   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
select *
from ( 
product.id, 1 as option.v
product.id, 2 as option.v
product.id, 3 as option.v
) 
where option.v =1 
   and option.v =2
   and option.v =3
cколько в результате получится записей из трех "исходных" ?
правильно 0.

чтобы получить что-то надо ВСЕ параметры включить в одну запись
Код:
select 
from product
left join option as optionsize ...
left join option_product as sizeproduct ...
left join option_value as sizevalue ...

left join option as optioncolor ....
left join option_product as color_product ....
left join option_value as color_value ....

where sizevalue = ...
   and color_value = ...
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.04.2017 в 21:40.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка Влада92 Microsoft Office Excel 1 13.08.2013 13:48
Выборка из БД Claster Помощь студентам 1 05.10.2011 14:21
Выборка выборка с таблицы с отношением многие-ко-многим 8alig8 БД в Delphi 2 24.06.2010 12:21
Выборка из БД Claster Помощь студентам 1 11.05.2010 23:01
Выборка из БД ИВАНьКа Общие вопросы C/C++ 4 21.08.2009 10:02