来自2个表的php子查询

时间:2016-06-16 07:57:34

标签: php mysql

  1. GROUPID
  2. 组名
  3. 有效性
  4. 用户表

    1. 组名
    2. 用户名
    3. 密码

      $c=date(y-m-d);
      
      $a=$_REQUEST['user'];
      
      $b=$_REQUEST['pass'];
      
      $c=date(y-m-d);
      
      $sql="SELECT username,password,validity FROM usertable,groups WHERE username='$a' AND password='$b' AND validity > (select validity,groupname from groups where groups.groupname = usertable.groupname)";
      
    4. 如何在PHP中编写子查询,根据与username相关的passoword,从usertable validitygroups检查groupnameusername来自usertable的{​​1}}。

3 个答案:

答案 0 :(得分:1)

我认为这会引发错误?将列与子选择进行比较时,两侧应具有相同数量和相同类型的列。

您在此处比较了无效的validity > validity,groupname

"SELECT username,password,validity   
 FROM usertable,groups
 WHERE username='$a' AND password='$b' 
   AND validity > (select validity from groups where groups.groupname = usertable.groupname)"

请注意,如果子查询返回多行,则应使用聚合函数或其他内容来确定应返回哪个值,如MAX(validity)

答案 1 :(得分:1)

我认为你正在寻找这个。使用join

$sql = "SELECT username,password,validity   
 FROM usertable a join groups b on a.groupname=b.groupname
 WHERE username='$a' AND password='$b' 
 AND validity > '$c'"

答案 2 :(得分:0)

我想你想根据用户所属的群体找出用户的有效性。

$sql = "select u.username, u.password, g.validity from usertable u, groups g where u.groupname = g.groupname and u.username = '$a' and u.password = '$b'";