Я пишу поисковый запрос для таблицы базы данных, я знаю, где проблема, но я не знаю, как ее решить.В моей форме у меня есть три поля, которые я могу использовать.Пользователь может выбрать использование только одного из них, оставляя другие пробелы.
CREATE DEFINER=`root`@`localhost` PROCEDURE `search_del`(
IN v_data_inizio date,
IN v_data_fine date,
IN v_tipo varchar(125),
IN v_autorizzazione varchar(25)
)
BEGIN
SELECT
tab18_delibere.numero,
tab18_delibere.anno,
DATE_FORMAT(data, '%d/%m/%Y') as data,
tab18_delibere.descrizione,
tab18_delibere.tipo,
tab18_delibere.nome,
tab19_assdel.autorizzazione
FROM tab18_delibere
join
tab19_assdel
on tab18_delibere.anno = tab19_assdel.anno and tab18_delibere.numero = tab19_assdel.numero
WHERE (v_autorizzazione IS NULL OR tab19_assdel.autorizzazione = v_autorizzazione) and
(v_data_inizio IS NULL OR tab18_delibere.data > v_data_inizio) and
(v_data_fine IS NULL OR tab18_delibere.data < v_data_fine) and
(v_tipo IS NULL OR tab18_delibere.tipo LIKE CONCAT('%', v_tipo, '%'));
END
Это хранимая процедура, я знаю, что проблема в этой строке:
(v_autorizzazione IS NULL OR tab19_assdel.autorizzazione = v_autorizzazione)
Потому что без этого все работает нормально, но, к сожалению, мне также нужно это поле для моего исследования,Если я выберу значение для него, ничего плохого не произойдет, и я получу результаты, которые я хочу, но если я оставлю это поле пустым, я не получу результаты поиска.