如何查询表的一部分

时间:2017-04-26 00:59:42

标签: php mysql sql

我有两个表,friends_table和invitations_table。 invitations_table是friends_table的子集。

我希望查询invitations_table的补充。两个表中的相关字段都是user_id。

friends_table

  columns; id, user_one, user_two

invitations_table

  columns; id, event_id, request_to, request_from

所以我想查询来自users_one,user_two的friends_table中的字段,其中这些列的字段不等于invitations_table中request_to列的字段。

同样,invitations_table中的每个用户ID都出现在friends_table中。

到目前为止我的尝试;

    $uninvited = "SELECT user_one, user_two FROM friends_table WHERE user_one, user_two NOT IN (SELECT user_one, user_two FROM friends_table WHERE user_one, user_two IN (SELECT request_to FROM invitees_table))";
    $uninvited_query = mysqli_query($conn, $uninvited);
    while($uninvited_array = mysqli_fetch_array($uninvited_query)){


      $uninvited_friends =$uninvited_array['user_one'];
      $uninvited_friend =$uninvited_array['user_two'];

echo $uninvited_friends;
echo $uninvited_friend;

然后我得到的错误如下;

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given

这对应于while循环。希望这澄清了我的问题,并感谢迄今为止的回应。

在不同的尝试中,我也会遇到同样的查询失败;

   $uninvited = "SELECT friend_table.user_one AND friend_table.user_two EXCEPT (SELECT invitees_table.request_to)";
   $uninvited_query =mysqli_query($conn, $uninvited);
        while($uninvited_array = mysqli_fetch_array($uninvited_query)){

          $uninvited_user = $uninvited_array['user_one'];
          $uninvited_username = getuser($uninvited_user, 'username');

            echo $uninvited_username;

另一次尝试,我改变了我的$ uninvited查询中的语法,看看这是不是问题,对此;

$uninvited = "SELECT user_one AND user_two FROM friend_table EXCEPT (SELECT request_to FROM invitees_table)";

但是那个查询仍然像其他查询一样失败。

1 个答案:

答案 0 :(得分:0)

嗯。嗯。 。 。 not exists怎么样?

SELECT f.user_one, f.user_two
FROM friend_table f
WHERE NOT EXISTS (SELECT 1
                  FROM invitees_table i
                  WHERE i.request_to = f.user_one and i.request_from = f.user_two
                 );

编辑说明:您的SQL代码格式错误,您显然对语言知之甚少。如果你想有效地使用它,我建议你花一些时间学习SQL。