我正在尝试从一个数据库表中获取数据到另一个数据库表。我已经可以使用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>
如前所述,将显示每个条目,而不显示与用户相对应的条目。
答案 0 :(得分:1)
您的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关系成功的结果时,这才会返回结果。