[英]SQL Select - multiple children
干杯,
我有4张桌子:
DIRECTORY - iddir, idcust, idfile
CUSTOMERS - id_cust, fname, lname
FILES - idf, id_dir, id_type
TYPEF - idtype, type_name
基本上,我想显示这样的所有值:
ID DIR、CUST FNAME、CUST LNAME、文件名
我试过这个 SQL 查询:
SELECT * FROM directory
JOIN customers ON idcust = id_cust
JOIN files ON idfile = idf AND
JOIN typef ON id_type = idtype
一切正常,直到最后一次 JOIN。 没有它,我没有任何错误,但是我无法打印与文件 id 对应的文件类型的名称。
我搜索过,我尝试了一些选择,但没有任何效果。 如何将“孙子表”中的一条信息带到父表? 谢谢
PHP代码
$conn = mysqli_connect("localhost", "root", "", "demodb");
if ($conn -> connect_error){
die("Connection failed:". $conn-> connect_error);
}
$sql = "SELECT * FROM directory
JOIN customers ON idcust = id_cust
JOIN files ON idfile = idf AND
JOIN typef ON id_type = idtype";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<tr><td>". $row["iddir"] ." </td>
<td>". $row["fname"] ." </td>
<td>". $row["lname"] ." </td>
<td>". $row["id_type"] ." </td>
<td> ". $row["type_name"] ." </td>
</tr>";
}
echo " </table>";
} else {
echo "0 result";
}
$conn->close();
我希望这对你有用
$conn = mysqli_connect("localhost", "root", "", "demodb");
if ($conn -> connect_error){
die("Connection failed:". $conn-> connect_error);
}
$sql = "SELECT d.iddir, c.fname, c.lname, f.id_type, t.type_name
FROM directory AS d
LEFT JOIN customers AS c ON d.idcust = c.id_cust
LEFT JOIN files AS f ON d.idfile = f.idf
LEFT JOIN typef AS t ON f.id_type = d.idtype";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<tr><td>". $row["iddir"] ." </td>
<td>". $row["fname"] ." </td>
<td>". $row["lname"] ." </td>
<td>". $row["id_type"] ." </td>
<td> ". $row["type_name"] ." </td>
</tr>";
}
echo " </table>";
} else {
echo "0 result";
}
$conn->close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.