Topic: Поиск SQL запросом.
Весь поиск реализую SQL запросами. На данный момент на формах присутствует поиск по параметрам : текст, дата, выпадающий список.
Суть проблемы: поиск реализован двумя разными запросами, один отвечает за текст, другой за дату и выпадающий список. Хочу объединить всё в один запрос для того чтобы поиск производился по всем этим параметрам одновременно, не получается мало знаний в sql.
Код поиска текста:
SELECT
zurnal_cpu.id,
info_stanka.invent_nomer,
info_stanka.vnutr_nazv_cpu,
strftime('%d.%m.%Y', zurnal_cpu.data),
strftime('%H:%M', zurnal_cpu.vremia_ostanovki),
strftime('%H:%M', zurnal_cpu.vremia_sdaci),
zurnal_cpu.pricina_ostanovki,
zurnal_cpu.code_error,
zurnal_cpu.tekst_oshibki,
zurnal_cpu.vipolnenie_raboti
FROM
zurnal_cpu
LEFT OUTER JOIN info_stanka ON info_stanka.id=zurnal_cpu.id_info_stanka
WHERE
(CASE WHEN '{poisk}' <> '' THEN info_stanka.invent_nomer LIKE '%{poisk}%' ELSE 1=1 END) OR
(CASE WHEN '{poisk}' <> '' THEN info_stanka.vnutr_nazv_cpu LIKE '%{poisk}%' ELSE 1=1 END) OR
(CASE WHEN '{poisk}' <> '' THEN zurnal_cpu.pricina_ostanovki LIKE '%{poisk}%' ELSE 1=1 END) OR
(CASE WHEN '{poisk}' <> '' THEN zurnal_cpu.code_error LIKE '%{poisk}%' ELSE 1=1 END) OR
(CASE WHEN '{poisk}' <> '' THEN zurnal_cpu.tekst_oshibki LIKE '%{poisk}%' ELSE 1=1 END) OR
(CASE WHEN '{poisk}' <> '' THEN zurnal_cpu.vipolnenie_raboti LIKE '%{poisk}%' ELSE 1=1 END)
ORDER BY zurnal_cpu.id DESC
Код поиска по дате и выпадающему списку:
SELECT
zurnal_cpu.id,
info_stanka.invent_nomer,
info_stanka.vnutr_nazv_cpu,
strftime('%d.%m.%Y', zurnal_cpu.data),
strftime('%H:%M', zurnal_cpu.vremia_ostanovki),
strftime('%H:%M', zurnal_cpu.vremia_sdaci),
zurnal_cpu.pricina_ostanovki,
zurnal_cpu.code_error,
zurnal_cpu.tekst_oshibki,
zurnal_cpu.vipolnenie_raboti,
smeni.smeni
FROM
zurnal_cpu
LEFT OUTER JOIN info_stanka ON info_stanka.id=zurnal_cpu.id_info_stanka
LEFT OUTER JOIN smeni ON smeni.id=zurnal_cpu.id_smeni
WHERE
(CASE WHEN {DateTimePicker1} IS NOT NULL THEN date(zurnal_cpu.data) = date({DateTimePicker1}) ELSE 1=1 END) And
(CASE WHEN {ComboBox1} <> -1 THEN zurnal_cpu.id_smeni = {ComboBox1} ELSE 1=1 END)
ORDER BY zurnal_cpu.id DESC