• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

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 и ответа нет
 
A

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 ;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!