如果mySQL和PHP中的两个表中不存在值,则返回' - '

时间:2018-05-21 12:51:25

标签: php mysql

我对数据库很新,并坚持这种情况。

我的数据库数据从另一个网址更新。本地数据库每周更新一次,因此我无法确定数据何时更改或所有表中是否存在所有数据。

这就是我需要比较Spec_Names的原因,如果Spec_Name不存在,即table_2,程序应该打印短划线作为用户的指示。

TABLE_1

+----------+-----------+--------------+
| category | Spec_Name | Spec_Value   |
+----------+-----------+--------------+
| Engine   |    x      | 111111111111 |
+----------+-----------+--------------+
| Engine   |    y      | 222222222222 |
+----------+-----------+--------------+

TABLE_2

+----------+-----------+--------------+
| category | Spec_Name | Spec_Value   |
+----------+-----------+--------------+
| Engine   |    x      | 111111111111 |
+----------+-----------+--------------+

因此,Table_2中不存在Spec_Name.y。

在这种情况下,我想向用户展示:

+---------+----------------+----------------+
|Spec_Name| car1.Spec_Value|car2.Spec_Value |
+---------+----------------+----------------+
|  x      | 111111111111   |        -       |
|  y      |      -         |    55555565    |
|  z      | 333333333333   |    77777777    |
etc.

目前我使用像这样的PHP循环遍历我的数据:

function printCarData($conn, $table){
  $query = "SELECT  Spec_Name, Spec_Value, SUBSTRING(Spec_Value, 1, 20), TechSpecCategoryName  FROM ".$table;
  if($result = mysqli_query($conn, $query)){
    echo"<ul>";
    while($row = mysqli_fetch_assoc($result)){

     if($query != $row["TechSpecCategoryName"]){

        echo "<li>"."<br>"."</li>";
      }
      echo "<li>".$row["SUBSTRING(Spec_Value, 1, 20)"]."</li>";

      $query = $row["TechSpecCategoryName"];
    } 
    echo"</ul>";
  }  
}

printCarData($link, $table_name)

我想使用COALESCE(),但我无法弄清楚,如何在情况下使用它。

另外,我认为我可以通过PHP实现这一点,但在完美的情况下有144个Spec_Names,所以它将是一个相当长的,hacky和昂贵的功能。

第三,我想,有没有办法在MySQL中使用模板表。所以,我会有一个包含所有可能的Spec_Names

的表

如果有人能指出正确的方向,那就太棒了。

0 个答案:

没有答案