【问题标题】:Is there a way to get data from table #2 if it has a foreign key with table #1 and I do query for table #1有没有办法从表 #2 中获取数据,如果它具有表 #1 的外键并且我查询表 #1
【发布时间】:2019-03-25 09:47:37
【问题描述】:

我有 2 个表,一个名为 users,还有一个名为 role_id 的表,它使用外键从名为角色的第二个表中获取数据。所以 role_id 是角色的 id,但我想获取位于角色表中的值并打印它而不是 id。我什至不知道该怎么做。 因此,如果我们查看代码: 我想回显角色的值而不是role_id,但它位于另一个表中

$querytable = mysqli_query($con, "SELECT * from users WHERE role_id = '2' OR role_id = '1'");
        while($row=$querytable->fetch_assoc()):?>
         <tr><td><?php echo $row['username'];?></td>
         <td><?php echo $row['fio'];?></td>
         <td><?php echo $row['password'];?></td>
         <td><?php echo $row['role_id'];?></td>
         <td><?php echo $row['salary_fix'];?></td>
         <td><?php echo $row['salary_percent'];?></td></tr>
        <?php endwhile;?>

【问题讨论】:

  • 试着更清楚你的问题
  • 你到底想显示什么
  • 还向我们展示所有这些相关表的架构
  • 现在你有几个答案尝试他们

标签: php mysql


【解决方案1】:

您可以使用 JOIN 从链接表中获取数据

这样:

SELECT * from users 
JOIN roles ON users.role_id = roles.id
WHERE role_id IN (1, 2) 

然后您将获得每个用户的角色表中的值

查看文档了解更多信息

https://dev.mysql.com/doc/refman/8.0/en/join.html

【讨论】:

    【解决方案2】:

    如果您想获取角色值而不是 role_id,您应该使用 LEFT JOIN:

    SELECT * FROM users LEFT JOIN roles ON users.roles_id = roles.value
    

    【讨论】:

      【解决方案3】:

      听起来您想在查询中使用联接,您能否提供有关您的表结构的更多详细信息?

      从你所说的我认为你正在寻找类似的东西:

      SELECT * FROM users INNER JOIN roles on users.role_id = roles.id WHERE role_id='1' OR role_id='2'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-11
        • 2019-03-09
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多