[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить mysql запрос
Страницы: 1, 2
darkleech
Добрый день.
Помогите пожалуйста составить запрос
user posted image

Мне нужно выбрать из этой таблицы только те item_id у которых, например одновременно есть несколько значений: param_value_id='1329' AND param_value_id='1849' AND param_value_id='278'
т.е И..=1329 И = 1849 .. И=278, если хоть одного значения нет у товара, значит он не должен быть в выборке.

Вот такой запрос выводит пусто, не могу понять почему((
Хотя у товара с ID=113897 все три значения присутствуют
SELECT *
FROM param_values_items_relation
WHERE `param_value_id`=1329 AND `param_value_id`=1849 AND `param_value_id`=278


user posted image

IN(1329,1849,278) не подходит, т.к. будет выводить товары у которых не все значения заданы, а нужно чтобы все присутствовали. И= И= И=
user posted image
sergeiss
darkleech, ты неправильно понимаешь суть SQL. Когда ты указываешь условие WHERE, то оно относится к определенной строке, а не к набору строк. Например, если ты указал
WHERE `param_value_id`=1329 AND `param_value_id`=1849 AND `param_value_id`=278

то это означает, что в одной строке величина должна быть одновременно равна всем трем значениям. Что в принципе невозможно.
Если используешь IN(...), то также будут выбраны те строки, у которых в указанной величине есть одно из значений, указанных в списке.

Тебе здесь нужен JOIN таблицы с самой собой. Примерно так:
select t1.item_id
from param_values_item_relation t1
left join param_values_item_relation t2
t1.item_id = t2.item_id
left join param_values_item_relation t3
on t2.item_id=t3.item_id and
where

t1.param_value_id = 1829 and
t2.param_value_id = 1329 and
t3.param_value_id = 278

Запрос не проверял :), но должен быть рабочий

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
darkleech
sergeiss
Спасибо большое, чуть попозже попробую, даже интересно стало))

А я нашел тут, человек пишет что помогло))
http://sqlinfo.ru/forum/viewtopic.php?id=4292#p25110
T1grOK
Задачи совершенно разные.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
darkleech
sergeiss
К сожалению не работает, а в чем проблема, понять к тоже не могу, знаний не хватает, к сожалению))
user posted image
darkleech
Цитата (T1grOK @ 8.09.2014 - 12:43)
Задачи совершенно разные.

А я понял что одинаковые:
из одного столбца выборка по нескольким значениям с условием И... И... И... по моему точь в точь как у меня, ну да неважно, у меня это не работает.
user posted image
darkleech
Это дамп двух товаров с разными значениями

CREATE TABLE `param_values_items_relation` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) NOT NULL DEFAULT '0',
`param_value_id` INT(11) NOT NULL DEFAULT '0',
`content` TEXT NOT NULL,
`in_filter` TINYINT(1) NOT NULL DEFAULT '0',
`in_card` TINYINT(1) NOT NULL DEFAULT '0',
`in_related` TINYINT(1) NOT NULL DEFAULT '0',
`price` DOUBLE NOT NULL,
`is_active` TINYINT(1) NOT NULL DEFAULT '0',
`hash` VARCHAR(32) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)

COLLATE='utf8_general_ci'
ENGINE=MyISAM
AUTO_INCREMENT=39184;

INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36566, 113894, 277, '', 1, 0, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36565, 113894, 463, '', 1, 0, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36564, 113894, 1329, '', 1, 0, 1, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13096, 113894, 1355, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13097, 113894, 1759, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13098, 113894, 1761, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13095, 113894, 1849, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36569, 113897, 278, '', 1, 0, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36568, 113897, 463, '', 1, 0, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (36567, 113897, 1329, '', 1, 0, 1, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13101, 113897, 1355, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13103, 113897, 1356, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13105, 113897, 1357, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13102, 113897, 1759, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13104, 113897, 1760, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13100, 113897, 1788, '', 1, 1, 0, 0, 1, '');
INSERT INTO `param_values_items_relation` (`id`, `item_id`, `param_value_id`, `content`, `in_filter`, `in_card`, `in_related`, `price`, `is_active`, `hash`) VALUES (13099, 113897, 1849, '', 1, 1, 0, 0, 1, '');


user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.