简体   繁体   English

如何使用 IF 在查询 SQL 中选择 JOIN TABLE?

[英]How to use IF to choose a JOIN TABLE in a query SQL?

I have 3 tables.我有 3 张桌子。 Debiti, Eventi and Parametri. Debiti、Eventi 和 Parametri。 In my Debiti table, I have id_evento and id_parametro fields.在我的 Debiti 表中,我有 id_evento 和 id_parametro 字段。 When the id_evento field is greater than zero, I need to do a join with the Eventi table.当 id_evento 字段大于零时,我需要与 Eventi 表进行连接。 When the id_parametro field is greater than zero, I need to do a join with the Parametri table.当 id_parametro 字段大于零时,我需要与 Parametri 表进行连接。 The id_event and id_parametro fields will never be greater than zero at the same time. id_event 和 id_parametro 字段永远不会同时大于零。 I think I need to use an IF or something similar.我想我需要使用 IF 或类似的东西。 I was wondering if anyone could help me solve this problem.我想知道是否有人可以帮助我解决这个问题。

SELECT  debiti.*, eventi.*, parametri.*    
FROM debiti 
INNER JOIN parametri ON debiti.id_parametro = parametri.id_parametro 
INNER JOIN eventi ON debiti.id_evento = eventi.id_evento

When executing this query, only one of the joins works.执行此查询时,只有一个连接有效。

In short, I need that简而言之,我需要那个

if id_evento > 0 then join Debiti with Eventi.如果 id_evento > 0 则加入 Debiti 和 Eventi。 if id_parametro > 0 then join Debiti with Parametri如果 id_parametro > 0 然后加入 Debiti 和 Parametri

Thank you.谢谢你。

在此处输入图像描述

You should use LEFT JOIN:你应该使用左连接:

SELECT  debiti.*, eventi.*, parametri.*    
FROM debiti 
LEFT JOIN parametri ON debiti.id_parametro = parametri.id_parametro 
LEFT JOIN eventi ON debiti.id_evento = eventi.id_evento

and optionally you can add the checks for the id's >0 (But that should not change the output when there is no 0 value in `parameteri' or 'eventi'):并且您可以选择添加对 id >0 的检查(但是当 `parameteri' 或 'eventi' 中没有 0 值时,这不应更改 output):

SELECT  debiti.*, eventi.*, parametri.*    
FROM debiti 
LEFT JOIN parametri ON debiti.id_parametro>0 AND debiti.id_parametro = parametri.id_parametro 
LEFT JOIN eventi ON debiti.id_evento>0 AND debiti.id_evento = eventi.id_evento

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM