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

Тема в разделе "SQL", создана пользователем alexdrob, 29 май 2010.

  1. alexdrob

    alexdrob Гость

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

    Есть таблица 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 и ответа нет
     
  2. alexdrob

    alexdrob Гость

    пока пришло в голосу что то типа
    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 ;
     
Загрузка...

Поделиться этой страницей