Многие ко многим???
Хм.. никак не могу разобраться...
Положим есть связующая таблица. В ней строки
1, 4
1, 5
2, 3
2, 5
т.е. связывает многие ко многим (если ничего не путаю).
т.е. у объектов 1 и 2 есть несколько вариантов характеристик и эти
характеристики могут быть у любого из объектов...
хм..
теперь если я выберу из таблицы
SELECT * FROM tabl WHERE ((filed1 = 4) OR (filed1 = 5));
то получу 2 строки!
хорошо... если я буду делать выбор сразу по нескольким таблицам - используя
DISTINCT уберу дубли..
А если я хочу получить объект, у которого есть и 4 и 5 -характеристики???
Вот это не помогает:
SELECT * FROM tabl WHERE ((field1 = 4) AND (field1 = 5));
Да и выглядит не очень логично...
КАК БЫТЬ?
рТЙЧЕФ ЧУЕН!
рПРТПВХК РПДЪБРТПУ
ФП ЕУФШ Ч РПДЪБРТПУЕ ПФВЙТБЕЫШ ПВЯЕЛФЩ
УП УЧПКУФЧПН 4 ,Б Ч ЪБРТПУЕ ПУЕЙЧБЕЫШ ФЕ
Х ЛПФПТЩИ ОЕФ РСФЕТЛЙ
Так что мне подкинули другую идею - сделать на временных таблицах (смысл тот же, что и с вложенным запросом).
Вопрос в том - нельзя ли все-таки одним запросом.
Попробуй через join
таблицу на себя и отфильтруй через where
4 and 5