LEFT JOIN情况下的错误消息,false

时间:2019-04-18 19:49:28

标签: mysql sql left-join

正如标题所述,我处于一种情况下,我要在两个表之间进行选择,以通过左联接验证是否有相等的参数,然后提取自定义回显。

从底部的表格中可以看到,我有3家公司(表格:tev_Evidenze)

其中两个具有(ID_evidenza)字段

因此,这意味着公司1和5,公司6拥有它,但没有ha。

这是左联接的作用,所以我想举例说明

1 true
5 true
6 false

我的数据库的方案:

TABLE: tev_Evidenze                 
id_struttura
ID_evidenza
id_tipo_accreditamento

id_struttura. | ID_evidenza | id_tipo_accreditamento
      1           420               1
——————————————————————————————————————————————————
      1           422               5
——————————————————————————————————————————————————
      1                             6

AND

TABLE: tev_Tipi_accreditamento
ID_tipo_acc
id_struttura

ID_tipo_acc. | id_struttura | 
      1           1         
——————————————————————————————
      5           1         
——————————————————————————————      
      6           1

代码:

<?php
$query_string = "SELECT * FROM tev_Tipi_accreditamento LEFT JOIN tev_Evidenze
ON tev_Tipi_accreditamento. ID_tipo_acc = tev_Evidenze.id_tipo_accreditamento
WHERE tev_Tipi_accreditamento.id_struttura = tev_Evidenze.id_struttura GROUP BY tev_Evidenze.id_struttura";
$query = mysqli_query($riskmanagement, $query_string);
?>
<?php
while($row = mysqli_fetch_assoc($query)){ ?>
<?php 
    if($query==0)  {
        echo $row['id_struttura']. "SI";
    }else{
        echo $row['id_struttura']. "no";
    }?>

<?php } ?>  

这时他们一个人出去

1
5

但是没有出来6,我想在左连接的结果不满意时发布结果

1 个答案:

答案 0 :(得分:1)

您要在WHERE子句中添加一个过滤条件,该条件应该在ON子句中。

从以下位置更改查询:

SELECT * 
FROM tev_Tipi_accreditamento 
LEFT JOIN tev_Evidenze ON tev_Tipi_accreditamento. ID_tipo_acc = 
          tev_Evidenze.id_tipo_accreditamento
WHERE tev_Tipi_accreditamento.id_struttura = tev_Evidenze.id_struttura 
GROUP BY tev_Evidenze.id_struttura

收件人(在第5行更改):

SELECT * 
FROM tev_Tipi_accreditamento 
LEFT JOIN tev_Evidenze ON tev_Tipi_accreditamento. ID_tipo_acc =
          tev_Evidenze.id_tipo_accreditamento
      AND tev_Tipi_accreditamento.id_struttura = tev_Evidenze.id_struttura 
GROUP BY tev_Evidenze.id_struttura

通过使用WHERE,您甚至没有注意到就将外部联接悄悄地转换为内部联接。