【发布时间】:2020-01-18 13:15:20
【问题描述】:
我需要用 3 个条件构建一个查询,但所有尝试过的表单都返回给我这三个表,即使它们有空值。
我尝试使用左连接和左外连接,但没有成功
如何只取回已输入数据的表格?
SELECT * FROM tb_associado AS associado
INNER JOIN tb_ProdutoComercial AS comercial ON associado.id_prodcomerc_a = comercial.id_prodcomerc
INNER JOIN tb_ProdAnsS4E AS sq ON comercial.id_ProdutoS4E_c = sq.nu_CodProdutoS4E
INNER JOIN tb_meiopagto AS tmp ON associado.id_meiopagto_a = tmp.id_meiopagto
LEFT JOIN tb_pgtoboleto AS tb ON (associado.id_associado = tb.cd_associado_pb AND tmp.cd_codmeiopagto = '3' AND tb.cd_associado_pb <> NULL) -- cond 1
LEFT JOIN tb_pgtocartao AS tc ON (associado.id_associado = tc.cd_associado_pc AND tmp.cd_codmeiopagto = '1' AND tc.cd_associado_pc <> NULL) -- cond 2
LEFT JOIN tb_pgtodebito AS td ON (associado.id_associado = td.cd_associado_pd AND tmp.cd_codmeiopagto = '2' AND td.cd_associado_pd <> NULL) -- cond 3
WHERE associado.id_associado = '311';
【问题讨论】:
-
在所有条件下将
...<> NULL替换为... IS NOT NULL -
@forpas 还是不行
-
您没有明确说明您希望查询返回什么。 (没有做你想要的代码并没有告诉我们你想要什么。)你的写作也不清楚。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。描述结果:说足够多的人可以离开并带着解决方案回来。在给出业务关系(船舶)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。
标签: mysql join conditional-statements