我正在为数据库表编写搜索查询,我知道问题出在哪里,但我不知道如何解决。在我的表单中,我可以使用三个字段。用户可以选择仅使用其中之一,而将其他留空。
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)
因为没有这个,一切都很好,但是可悲的是,我也需要这个领域来进行研究。如果为它选择一个值,则不会发生任何不好的事情,并且会得到想要的结果,但是如果将其留为空白,则不会得到搜索结果。