如何将单个结果与数据库中的表隔离



我正在尝试将数据从一个数据库表获取到另一个数据库表。我已经能够使用 SQL 的 JOIN 功能做到这一点,但我无法弄清楚如何从数据库中隔离单个结果并将其显示到相应用户的配置文件页面。截至目前,将显示存储在数据库中的所有条目,而不是相应的条目。我将如何解决这个问题?

内部和外部、左侧和右侧的每个可能组合都与两个数据库联接,以尝试并且只显示用户的一个条目。

<?
$result=mysql_query("SELECT nea_profile.fullname, nea_profile.dob,nea_profile.bio 
                    FROM nea_profile 
                        JOIN nea_users ON nea_profile.userid = nea_users.userid 
                    WHERE nea_users.fullname = nea_profile.fullname");
?>
<div class="column">
<h2>About</h2>
    <div align="center">
        <table border="8">
             <?
                while ($row=mysql_fetch_array($result)) { 
                    echo "<tr><td><b>Full Name</b> - $row[fullname] 
                    echo "<td><b>Born</b> - $row[dob]</td></tr>";
                    echo "<tr><td>$row[bio]</td><td></td></tr>";
                }
            ?>
        </table>
    </div>

如前所述,将显示每个条目,而不是与用户对应的条目。

你的 where 子句执行与连接相同的功能,并且是冗余的(除非 nea.users 和 nea.profile 包含具有不同"全名"值的相同 ID(。目前,您要求数据库为您提供所有结果nea_users其中user_id表列在nea_profile表中具有匹配的user_id列值,然后nea_users中条目的全名等于nea_profile的全名。此处未指定其他条款。

where 子句需要指定所需用户数据的确切值,无论是全名还是 ID。如果按全名,那么您可以考虑将查询更改为如下所示:

SELECT nea_profile.fullname, nea_profile.dob,nea_profile.bio 
                FROM nea_profile 
                    JOIN nea_users ON nea_profile.userid = nea_users.userid 
                WHERE nea_users.fullname = 'John Doe'

此外,我建议看看使用"INNER JOIN",因为这只有在能够找到JOIN关系成功的结果时才会返回结果。

最新更新