[英]SQL query only returns 3 rows
我有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:
除了在查询中添加列之外, 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
您应该这样使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.