繁体   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