Общие > Базы данных
склейка двух таблиц
ГлЮпый:
есть запрос вида: SELECT goods.id, identifier, groups, sire, title, param, price, available, desc1, rating, limage3 FROM goods, parameters WHERE identifier = goods_identifier AND catalog_id=44 AND sire=7 AND (name_id = 10 OR name_id = 1) GROUP BY goods.id ORDER BY rating LIMIT 0,10, нужен идентичный запрос но работающий при условии (name_id = 10 AND name_id = 1). У кого какие идеи?
Меняздесьдавнонет:
--- Цитировать --- но работающий при условии (name_id = 10 AND name_id = 1). У кого какие идеи?
--- Конец цитаты ---
У меня такая идея, что кому-то надо хорошенько выспаться. Или похмелиться.
Или сменить ник. Как вы яхту назовете - так она и поплывет.
Выбрать всех детей в классе, причем так, чтобы у ребенка был возраст и 1 год, и 10 лет.
Много ты таким запросом навыбираешь?
ГлЮпый:
--- Цитировать ---RomikChef:
Выбрать всех детей в классе, причем так, чтобы у ребенка был возраст и 1 год, и 10 лет.
Много ты таким запросом навыбираешь?
--- Конец цитаты ---
В том то и проблема что такой запрос не работает, а придумать работающую альтернативу не получается, вот и спрашаю, может кто чем помогет...
Меняздесьдавнонет:
Альтернативу ЧЕМУ? Бессмысленному выражению? Я тебе сколько угодно альтернатив накидаю.
Пойди-ка ты, поспи.
или смени род занятий.
ГлЮпый:
--- Цитировать ---RomikChef:
Альтернативу ЧЕМУ? Бессмысленному выражению? Я тебе сколько угодно альтернатив накидаю.
Пойди-ка ты, поспи.
или смени род занятий.
--- Конец цитаты ---
Согласен, выражение действительно бессмысленно, но я же не сказал что оно должно писаться именно так, это всего лишь попытка описать задачу.
Попробую переформулировать задачу
есть три таблицы
goods – хранит информацию по товарам
parameters – хранит параметры товара для выборки по фильтру, причем соответсвие товара заданному параметру задается парой «идентификатор товара»->>id параметра. В этой базе одному товару может соответствовать сколько угодно параметров, напрмер:
структура:`parameters` ( `id` int(11) NOT NULL auto_increment, `name_id` int(11) default NULL, `goods_identifier` text NOT NULL, PRIMARY KEY (`id`))
данные:
1, 10, \'A50\'
2, 9, \'A50\'
3, 7, \'A50\'
4, 1, \'A50\'
5, 1, \'A52\'
6, 7, \'A52\'
7, 9, \'A52\'
8, 10, \'A52\'
Необходимо выбрать все товары параметры которых соответствуют заданным, то есть если для данного товара в таблице «parameters» есть соответствующая запись, но при этом нужно исключить те товары, для которых такой записи нет, также необходимо исключить те товары, для которых нет хотя бы одной записи соответствующей заданному параметру.
Эту схему я к нынешнему моменту реализовал путем двух последовательных запросов в базу с сортировкой результата, но эта схема очень медленна, поэтому ищу возможность реализовать все на одном запросе. Буде крайне признателен за любую помощь или идею.
P.S. поспать это конечно хорошо, но начальство требует результат, а тот что я могу предложить меня не удовлетворяет.
Навигация
Перейти к полной версии