我有两个表,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)";
但是那个查询仍然像其他查询一样失败。
答案 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。