LEFT JOIN的错误消息,false

问题描述 投票:-1回答:1

正如标题所说,我有一种情况,我在两个表之间做一个选择,通过左连接验证,那时有相同的参数,以拉出自定义回声。

正如你从底部的表格中看到我有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

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,我想在左连接的结果不满足时释放结果

mysql sql left-join
1个回答
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,您可以默默地将外部联接转换为内部联接,甚至没有注意到。

© www.soinside.com 2019 - 2024. All rights reserved.