我有两个表。 第一个表包含简单的用户数据,并具有列
$username, $text, $image
(这称为"用户数据"(。
第二个表包含有关哪些用户"关注"其他用户的信息,这些信息由列设置
$username and $usertheyfollow
(这称为"跟随"(。
我需要做的是单独向每个用户显示数据,以便与他们相关。 这意味着用户ABC需要能够查看他/她关注的所有用户的$text
和$image
输入。 为此,我认为我需要编写一个 sql 查询,该查询涉及首先检查登录用户是谁(在本例中为 userABC(,然后选择表 FOLLOW 上具有相应值的所有 $usertheyfollow
实例 "userABC."
然后我需要返回我的 USERDATA
表并选择具有相应值 $usertheyfollow
的$text
和$image
。 然后我可以使用 echo 命令或类似的东西来显示它......
我将如何编写此 SQL 查询? 我甚至以正确的方式进行数据库架构吗?
使用如下表:
userdata
表
______________________________
| id | username | text | image |
|------------------------------|
| 1 | jam | text | image |
+------------------------------+
| 2 | sarah | text | image |
+------------------------------+
| 3 | tom | text | image |
+------------------------------+
follows
表
_____________________
| userId | userFollow |
|---------------------|
| 1 | 2 |
+---------------------+
| 1 | 3 |
+---------------------+
并使用以下 SQL:
SELECT userdata.text, userdata.image FROM follows LEFT JOIN userdata ON follows.userFollow = userdata.id WHERE follows.userId = 1
将获取ID 为"1"的用户遵循的所有文本和图像
事实证明,这两个答案都不正确。 @jam6459是最接近的。
正确答案如下:
SELECT userdata.text, userdata.image, follows.userFollow
FROM userdata
LEFT JOIN follows ON follows.userFollow = userdata.username
WHERE follows.userId = $username
我还发现,在 jam 的表格示例中,没有与 ID 对应的用户名更容易。 这是因为同一个用户在"用户数据"中可以有多个条目。 我改用用户名作为 ID。
function get_text_image($username)
{
$sql = "SELECT * FROM USERDATA where username='".$username."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo $row['text'];
echo $row['image'];
}
}
function display_data_of_followers($userid)
{
$sql = "SELECT usertheyfollow FROM follow WHERE userid = ".$userid."";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
get_text_image($row['usertheyfollow']);
}
}
display_data_of_followers($userid);