使用可选字段mysql搜索查询

时间:2019-02-07 14:29:56

标签: mysql database join

我正在为数据库表编写搜索查询,我知道问题出在哪里,但我不知道如何解决。在我的表单中,我可以使用三个字段。用户可以选择仅使用其中之一,而将其他留空。

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)

因为没有这个,一切都很好,但是可悲的是,我也需要这个领域来进行研究。如果为它选择一个值,则不会发生任何不好的事情,并且会得到想要的结果,但是如果将其留为空白,则不会得到搜索结果。

0 个答案:

没有答案