簡體   English   中英

SQL查詢只返回3行

[英]SQL query only returns 3 rows

我有3個表,我希望它可以加入,以便可以在HTML表中顯示其中的所有記錄。

下表如下:

  1. laporan
  2. DOKTOR
  3. pesakit

我使用查詢SELECT * FROM laporan NATURAL JOIN doktor NATURAL JOIN pesakit; 加入所有表格。

我在laporan表中輸入了5條記錄,因為它僅將doktorpesakit稱為外鍵。 我還使用了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:

  • id(PK)
  • doktor_nama

pesakit:

  • id(PK)
  • pesakit_nama

laporan:

  • id(PK)
  • laporan_tarikh
  • laporan_doktor_id(FK到doktor的ID)
  • laporan_pesakit_id(從FK到pesakit的ID)

除了在查詢中添加列之外, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM