[英]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.