检查db中是否有一个值以及if

时间:2019-04-18 16:41:19

标签: php

我必须通过左连接检查两个表中是否存在值,如果存在关系,请写yes,否则请否

每次我将证据(tev_Evidenze)与结构(tev_Tipi_accreditamento)关联时,查询都应该告诉我该结构存在证据,只是现在在结构n6处。没有证据,反正我回答是 代码:

    <?php 
    $CONTROLLA = mysqli_query($riskmanagement,
                    "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");

    $EVIDENZE=mysqli_num_rows($CONTROLLA);
    if($EVIDENZE==0)  {
        echo "SI";
    }else{
        echo "no";
    }
    ?>

周期是正确的,我确定在数据库中,两个表中都没有值,但是我的if似乎不起作用

注意:

<?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 echo $row['id_struttura'] ;
    if($query_string==0)  {
        echo "SI";
    }else{
        echo "no";
    }?>

<?php } ?>  

1 个答案:

答案 0 :(得分:0)

您正在计算所有匹配项,而不是每个结构的匹配项数。您可以使用以下内容:

SELECT s.id_struttura, IF(COUNT(e.id_struttura) > 0, 'Yes', 'No') AS matches
FROM tev_Tipi_accreditamento AS s
LEFT JOIN tev_Evidenze AS e ON s.id_struttura = e.id_struttura AND s.ID_tipo_acc = e.id_tipo_accreditamento
GROUP BY s.id_struttura

这将返回如下表:

1 Yes
2 No
3 No
4 Yes

每个结构ID。

DEMO

您可以使用以下方法显示结果:

$CONTROLLA = mysqli_query($riskmanagement, "
    SELECT s.id_struttura, IF(COUNT(e.id_struttura) > 0, 'Yes', 'No') AS matches
    FROM tev_Tipi_accreditamento AS s
    LEFT JOIN tev_Evidenze AS e ON s.id_struttura = e.id_struttura AND s.ID_tipo_acc = e.id_tipo_accreditamento
    GROUP BY s.id_struttura") or die(mysqli_error($riskmanagement));
echo "<table>";
while ($row = mysqli_fetch_assoc($CONTROLLA)) {
    echo "<tr><td>{$row['id_struttura']}</td><td>{$row['matches']}</td>
}
echo "</table>";