Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Запустался. Как выбрать item_id по некоторым критериям. Ниже структура.
Пробовал таким:
SELECT `item_id` FROM `charact` WHERE (`field_id`=16 AND `value`='Германия') AND (`field_id`=17 AND `value` BETWEEN '40' AND '50');
Этот запрос вернет null
Но по идее я хочу выбрать item_id = 912755 и 112700
Как правильно построить запрос. Спасибо!
CREATE TABLE IF NOT EXISTS `charact` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `field_id` int(10) unsigned NOT NULL, `item_id` int(10) unsigned NOT NULL, `value` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `field_id` (`field_id`,`item_id`,`value`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; INSERT INTO `charact` (`id`, `field_id`, `item_id`, `value`) VALUES (20, 15, 912755, 'AEG'), (21, 16, 912755, 'Германия'), (42, 16, 112700, 'Германия'), (1829, 15, 912593, 'Ariston'), (4276, 17, 112700, '46'), (1830, 16, 912593, 'Италия'), (4475, 15, 913055, 'Stiebel-Eltron'), (4476, 17, 912755, '44'), (7904, 17, 973111, '3'), (7905, 16, 912852, 'Германия');
Неактивен
FROM charact c1, charact c2
WHERE c1.item_id = c2.item_id AND
c1.field_id = 16 AND c1.value = "Германия" AND
c2.field_id = 17 AND c2.value BETWEEN 40 AND 50;
Неактивен
paulus написал:
FROM charact c1, charact c2
WHERE c1.item_id = c2.item_id AND
c1.field_id = 16 AND c1.value = "Германия" AND
c2.field_id = 17 AND c2.value BETWEEN 40 AND 50;
спасибо! работает.
в таблице около 100,000 записей, при выборке из нее по 5-7ми характеристикам проблем не должно возникнуть? спасибо.
Неактивен
Попробуйте?
По логике нужны ключики на (item_id) и (field_id, value).
Неактивен
paulus написал:
Попробуйте?
По логике нужны ключики на (item_id) и (field_id, value).
через часика 4-5 попробую. учту индексы)
Неактивен