我对数据库很新,并坚持这种情况。
我的数据库数据从另一个网址更新。本地数据库每周更新一次,因此我无法确定数据何时更改或所有表中是否存在所有数据。
这就是我需要比较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
的表如果有人能指出正确的方向,那就太棒了。