Russian Qt Forum

Программирование => Базы данных => Тема начата: Achernar от Июнь 11, 2014, 07:13



Название: [РЕШЕНО] Запрос с многими условиями
Отправлено: Achernar от Июнь 11, 2014, 07:13
Здравствуйте,

Новичок в SQL, не совсем все понимаю, возник вот такой вопрос:

Есть таблица в БД, пусть в ней будет 4 поля, есть форма на которой можно задать несколько условий, пример во вложении, причем неизвестно сколько из этих условий активирует пользователь. Меня интересует каким образом правильно составить подобный запрос, то есть делается это средствами клиента или БД, и как конкретно это сделать - писать запросы на каждый вариант, но ведь вариантов может быть очень много, или есть способ проще?


Название: Re: Запрос с многими условиями
Отправлено: Figaro от Июнь 11, 2014, 07:37
А в чем проблема? В зависимости от чекбоксов и текстовых полей добавляем в WHERE нужные условия, например:

Код:
QString sql("SELECT * FROM table WHERE");
if (Field1.isChecked()) {
if (!Field1Min.text().isEmpty())
sql += " (field1 > :Field1Min)";
if (!Field1Max.text().isEmpty())
sql += " (field1 < :Field1Max)";
}
...
QSqlQuery query(database);
query.prepare(sql);
if (Field1.isChecked()) {
if (!Field1Min.text().isEmpty())
query.bindValue("Field1Min", Field1Min.text().toInt());
if (!Field1Max.text().isEmpty())
query.bindValue("Field1Max", Field1Max.text().toInt());
}
...
if (!query.exec()) {
...
}

P.S. AND'ы в SQL условии сами проставите...


Название: Re: Запрос с многими условиями
Отправлено: Achernar от Июнь 11, 2014, 07:45
Спасибо, просто как-то не мог уловить общий принцип составления.