Выбрать из таблицы по 2м параметрам

  • Автор темы alexdrob
  • Дата начала
A

alexdrob

#1
Здравствуйте! Помогите пожалуйста составить запрос.

Есть таблица ann как бы объявление 1 запись 1 объявление
Код:
PHP:
id | city_id | price | ..................
есть city
Код:
PHP:
id | name
есть fields - различные дополнительные поля то есть содержит записи типа Год? Расстояние? и т.д.
Код:
PHP:
id | name
и есть ann_fields связь между ann и fields + значение для fields, то есть для объявления с ID 1 будет несколько полой в таблице с ID объявления id вопроса и ответом на него
Код:
PHP:
id | ann_id | fields_id | value
нужно организовать поиск по полям, делаю так

Код:
PHP:
select * from ann
left join city on ann.id=city.id
where ann.city_id=1 and price > 1000
как в этот код добавить выборку с таблицы ann_fields

Ну или хотя бы подскажите как просто имея таблицу
PHP:
id | ann_id | fields_id | value
1 |	 1	 |  1		 | 100
2 |	 1	 |	2		| 200
3 |	 6	 |	1		| 677
выбрать с неё записи где
fields_id = 1 и value < 200
и
fields_id = 2 и value > 100

запрос типа
PHP:
select * from ann_fields where (fields_id = 1 and value < 200) or (fields_id = 2 and value > 100) group by ann_id
вернёт ответ в случае любого совпадения а мне нужно чтобы всё совпало а если писать вместо or - and то получается что fields_id = 1 ..... and fields_id = 2 и ответа нет
 
A

alexdrob

#2
пока пришло в голосу что то типа
select ann.id,
(select `value` from fields_ann where fields_ann.fields_id=1 and fields_ann.ann_id=ann.id) as f1,
(select `value` from fields_ann where fields_ann.fields_id=2 and fields_ann.ann_id=ann.id) as f2,
from ann where f1>200 and f2 > 100 ;