”破折号

xwmevbvl  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(283)

我对数据库很不熟悉,而且一直在这种情况下工作。
我的数据库从另一个url更新数据。本地数据库每周更新一次,所以我不能确定数据何时更改,或者所有的数据是否都存在于所有的表中。
这就是为什么我需要比较spec\u名称,如果spec\u名称不存在,即表2,程序应该打印一个破折号作为用户的指示符。
表1

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

表2

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

因此,spec\u name.y将不存在于表2中。
在这种情况下,我想向用户展示:

+---------+----------------+----------------+
|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\u名称,所以这将是一个相当长、粗糙和昂贵的函数。
第三,我想,有没有一种方法可以在mysql中使用模板表。所以,我有一张表,上面有所有可能的spec\u名称
如果有人能给我指出正确的方向,那就太好了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题