SQL создать запрос на выборку с возможными пустыми критериями
SELECT * FROM Сорта WHERE Морозоустойчивость = 'Высокая' AND Урожайность = 'Средняя'
Нужно сделать выборку по определённым критериям, вводимых юзером. Суть в том, что критерий может быть и пустым. Например Урожайность = '', и нужно будет вывести выборку только по Морозоустойчивости.
Ответы (2 шт):
Автор решения: Aleksandr Fetisov
→ Ссылка
Тут надо использовать динамический запрос Можете попробовать использовать код ниже
import sqlite3
# установка соединения с базой данных
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# формирование запроса
query = "SELECT * FROM Сорта WHERE 1=1 "
params = []
morozoust = input("Введите морозоустойчивость (Высокая/Средняя/Низкая): ")
if morozoust != "":
query += "AND Морозоустойчивость = ? "
params.append(morozoust)
urozh = input("Введите урожайность (Высокая/Средняя/Низкая): ")
if urozh != "":
query += "AND Урожайность = ? "
params.append(urozh)
# выполнение запроса
result = cursor.execute(query, params).fetchall()
# вывод результатов
for row in result:
print(row)
# закрытие соединения с базой данных
conn.close()
Автор решения: gil9red
→ Ссылка
Добавьте условие с проверкой введенных переменных в запросе на ''. Тогда, проверка будет выполняться если их значение задано
Вместо :morozoust и :urozh у вас должны быть реальные значения. Например, переданные через биндинг, либо явно вставленные в запрос
Пример:
SELECT * FROM Сорта
WHERE
(:morozoust = '' OR Морозоустойчивость = :morozoust)
AND (:urozh = '' OR Урожайность = :urozh)