正如标题所说,我有一种情况,我在两个表之间做一个选择,通过左连接验证,那时有相同的参数,以拉出自定义回声。
正如你从底部的表格中看到我有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,我想在左连接的结果不满足时释放结果
您正在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
,您可以默默地将外部联接转换为内部联接,甚至没有注意到。