我有3个表,我想要它加入,所以我可以在HTML表格中显示其中的所有记录。
表格如下:
我使用查询SELECT * FROM laporan NATURAL JOIN doktor NATURAL JOIN pesakit;
加入所有表格。
我在laporan
表中输入了5条记录,因为它只引用doktor
和pesakit
作为外键。我还使用了phpmyadmin查询工具来显示这个查询的记录。
问题是,当我使用该查询时,在这5条记录中,只能显示3条记录。有什么问题? php代码中的mysql_fetch_array()
没有任何问题。
修改
这是表格代码的样子:
<?php
$result = mysql_query("SELECT * FROM laporan NATURAL JOIN doktor NATURAL JOIN pesakit;");
$i = 1;
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td>" . $i++ . "</td>";
echo "<td>" . $row['doktor_nama'] . "</td>";
echo "<td>" . $row['pesakit_nama'] . "</td>";
echo "<td>" . $row['laporan_tarikh'] . "</td>";
echo "</tr>";
}
echo "</tbody>
</table>";
?>
数据库结构如下:
DOKTOR:
pesakit:
laporan:
答案 0 :(得分:3)
除了向查询添加列外,INNER JOINS
还会消除行。如果您希望查询返回五行而且只有三行,我怀疑 laporan 表中的两行在两个引用表中的键是否为NULL。
所以,请尝试使用LEFT OUTER JOIN
,例如:
SELECT lap.*
, d.doktor_nama
, p.pesakit_nama
FROM laporan lap
LEFT OUTER JOIN doktor d
on lap.aporan_doktor_id =d.ID
LEFT OUTER JOIN pesakit p
on lap.laporan_pesakit_id =p.ID
答案 1 :(得分:1)
你应该使用INNER JOIN而不是NATURAL JOIN:
SELECT * FROM laporan
INNER JOIN doktor ON laporan.laporan_doktor_id = doktor.id
INNER JOIN pesakit ON laporan.laporan_pesakit_id = pesakit.id