Здравствуйте! Есть в БД (mysqli) 2 таблицы. Одна родительская (nodes). Содержит основные поля страницы. Другая - дочерняя (fields). fields содержит 4 поля: id, nid (ссылка на соответствующую ноду), name (название поля), val (значение поля). У разных node может быть разное количество и разное содержание полей из fields. Нужно реализовать фильтр как по полям fields, так и по полям nodes. Фильтры взаимодействуют между собой через AND. Сделал вот так: Код (Text): SELECT * from nodes WHERE category = 4 AND id IN (SELECT nid from fields WHERE name = \'blabla\' AND val = 1 AND nid IN (SELECT nid from fields WHERE name = \'addition\' AND val < 160) ) В принципе, работает, но это я привел пример только для двух фильтров по полям из fields и одного поля из nodes. А их могут быть десятки, а возвращаемые результаты могут содержать сотни тысяч результатов и они вот так каскадно накладываются друг на дружку. Мне кажется, такая конструкция будет как бык помои съедать ресурсы сервера. Может, кто-нибудь знает более элегантный способ как это сделать? P.S. Не судите строго. В самом SQL я не очень разбираюсь. Надергал с учебников и с форумов скриптов, собрал с них вот это. Вроде работает . Но хотелось бы что-то пограмотнее. Не может же быть, чтобы такая тривиальная задача решалась вот такими костылями.