正如标题所述,我处于一种情况下,我要在两个表之间进行选择,以通过左联接验证是否有相等的参数,然后提取自定义回显。
从底部的表格中可以看到,我有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,我想在左连接的结果不满意时发布结果
答案 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
,您甚至没有注意到就将外部联接悄悄地转换为内部联接。