我对数据库很不熟悉,而且一直在这种情况下工作。
我的数据库从另一个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名称
如果有人能给我指出正确的方向,那就太好了。
暂无答案!
目前还没有任何答案,快来回答吧!