从表中选择sql然后在一个语句中与其他表进行比较

时间:2015-06-05 16:06:59

标签: php mysql sql-server

我必须在一个数据库中使用表。

  1. users
  2. user_activate
  3. 我需要php中的变量

    1. $username = foo;
    2. $key = jas823k123ksd34324;
    3. 现在我想从表users中选择属性user_id user_username == $username

      我用这句话

      这样做
      $sql = "SELECT user_id FROM users WHERE user_username = '$username'";
      $result = mysqli_query($db, $sql);
      while($row = mysqli_fetch_assoc($result)){
          $user_id = $row['user_id'];
      }
      

      现在我想从表user_activate中选择属性user_activate_key user_activate_key == $key;

      为此,我使用以下声明:

      $sql2 = "SELECT user_activate_key FROM user_activate WHERE user_activate_key = '$key'";
      $result2 = mysqli_query($db, $sql2);
      while($row = mysqli_fetch_assoc($result)){
          $user_key = row['user_activate_key'];
      }
      

      我可以在一个声明中做两个陈述吗?

1 个答案:

答案 0 :(得分:1)

正如您所写的那样,两个单独的查询是正确的方法。但我怀疑usersuser_activate之间存在某种关系,这可能会使你所要求的东西变得有意义。假设user_activate_key与特定user_id绑定,您可以执行以下操作:

select users.user_id, ua.user_activate_key
from users u
left join user_activate ua
    on u.user_id = ua.user_id
    and ua.user_activate_key = '$key'
where u.username = '$username'

LEFT JOIN表示即使没有匹配的user_activate_key记录,也会显示该用户。