如果另一个查询(表中存在),则替换值


Replace value if exists in another query(table)?

所以我正在尝试一些全新的东西(对我来说)。我有一个PHP文件,我尝试在其中检索2个表的数据并替换值(如果它们匹配)。因为我不太确定我在做什么,所以我有点卡住了:)这是我想要的:我的 mysql 数据库中有 2 个表。

"

广告"表有"logo_fid"列。表"files"具有"fid"和"filepath"列。

现在我想echo"广告"表中"logo_fid"列的值。但是,在此之前,我想看看在"文件"表中是否在"fid"卷中存储了相应的值,如果是这样,我想回显"filepath"的值而不是"logo_fid"的值。所以基本上我想要的是替换 logo_fid 列的返回值,如果该值与"fid"列中的值匹配,则替换为相应的"filepath"值。

希望我说清楚了。无论如何,我有这个代码自动取款机。希望有人能帮我解决这个问题。多谢!

<?php
//connection info xxxx
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//advertisement SELECT
$sql = "SELECT logo_fid FROM advertisement ORDER BY nid ASC";
$result = $conn->query($sql);
//advertisement SELECT
$sql2 = "SELECT fid, filepath FROM files";
$result2 = $conn->query($sql2);
if ($result->num_rows > 0 && $result2->num_rows > 0) {
    // output data of each row
  while(($row = $result->fetch_assoc()) && ($row2 = $result2->fetch_assoc())){
     //So after i received all the info i'd like to check if the value of logo_fid matches with fid and if so replace the value with the value of filepath
       if ($row["logo_fid"] == $row2["fid"]) :
       echo $row2["filepath"];
       else :
       echo $row["logo_fid"];
        endif;
       echo '<br>';

    }
} else {
    echo "0 results";
}
$conn->close();
?>

似乎这可以作为一个查询来完成。

SELECT A.logo_Fid, F.Fid, F.filePath, coalesce(F.FilePath, Logo_Fid) as ValueYouWant
FROM advertisement A
LEFT JOIN files F
 on A.logo_Fid = F.FID

然后,您可以在没有内联逻辑的情况下回显 ValueYouWant。

连接将 Fid 和 logo_fid 上的两个表相关联。如果找到匹配项,则 Valueyouwant 将包含 f.filepath,如果未找到匹配项,logo_fid将在 valueyouwant 中。

由于这是使用 LEFT 连接,因此将返回播发中的所有值,并且仅返回文件中的相关记录。

所以要显示...

我不怎么做 PHP,但被确认为答案的在线搜索表明它会是这样的......

 $sql="    SELECT A.logo_Fid, F.Fid, F.filePath, coalesce(F.FilePath, Logo_Fid) as ValueYouWant
    FROM advertisement A
    LEFT JOIN files F
     on A.logo_Fid = F.FID ORDER BY NID asc"
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
 echo $row['ValueYouWant'];
 echo '<br>';
}