我正在尝试显示一个表,该表将打印出我为论坛软件创建的主题列表(有几十个),并使用INNER JOIN语句从另一个表中显示其版本号。
这是我要打印的HTML表格:
Theme Name Version Number ------------------------------- Elegance 1.7.0 Smarty 1.7.4 Aria 1.8.1 etc etc
主题及其ID存储在 xf_style 表中:
-------------------------------- style_id | title -------------------------------- 1 | Elegance 2 | Smarty 3 | Aria
主题版本号存储在选项表 xf_style_property 中。后端系统中有数百个选项,每个选项都有一个选项ID(style_property_id)。 "主题版本"我正在寻找的选项ID为" 5145"。
xf_style_property 表
--------------------------------------------------------------------- style_id | style_property_id | property_label | property_value --------------------------------------------------------------------- 1 | 5144 | Logo Size | 110px 2 | 5144 | Logo Size | 145px 3 | 5144 | Logo Size | 120px 1 | 5145 | Theme Version | 1.7.0 2 | 5145 | Theme Version | 1.7.4 3 | 5145 | Theme Version | 1.8.1
此表中有许多重复值。基本上我想为 style_property_id 等于 5145 的每个主题获取 property_value ,并使用xf_style表将其加入内部。
我的完整剧本:
<?php
$servername = "localhost";
$username = "***";
$password = "***";
$dbname = "***";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
$sql = "SELECT xf_style.title, xf_style_property.property_value FROM xf_style_property WHERE property_definition_id = 5145, INNER JOIN xf_style ON xf_style_property.style_id=xf_style.style_id";
$result = $conn->query($sql) or die($conn->error);
?>
<table border="2" style= "background-color: #84ed86; color: #761a9b; margin: 0 auto;" >
<thead>
<tr>
<th>Theme Name</th>
<th>Theme Version</th>
</tr>
</thead>
<tbody>
<?php
while ($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row['title'] . "</td><td>" . $row['property_value'] . "</td></tr>";
}
?>
</tbody>
</table>
我一直在尝试十几种不同的调整,包括本指南: https://www.w3schools.com/sql/sql_join.asp 和SE的其他指南似乎无法使其发挥作用。 SQL新手可以提供任何帮助。
免责声明:property_label专栏实际上并不存在。我只是为了读者理解而写的。从另一个表中已经知道哪个ID代表什么选项标签。
答案 0 :(得分:2)
where
条件位于join
这应该解决它
$sql = "SELECT xf_style.title, xf_style_property.property_value FROM xf_style_property INNER JOIN xf_style ON xf_style_property.style_id=xf_style.style_id" WHERE property_definition_id = 5145,;
否则,如果您想避免重复的主题(即使它们具有不同的价值),您可以使用Group By
答案 1 :(得分:1)
您的查询应该只是
print()