PHP连接两个表,其中一个表中的两列包含from_ID,to_ID引用另一个表中的id

时间:2015-03-13 05:42:33

标签: php mysql arrays mysqli inner-join

我有两张桌子

FNF

id
from_ID
to_ID

用户

id
name

当我发送好友请求时,我的用户表中的id转到from_ID。当其他人发送好友请求时,他的id转到from_ID,我的id转到to_ID。

我从 fnf 表中得到了我的所有好友ID,如下所述

$getmyfriends=mysqli_query($con, "SELECT * FROM fnf WHERE (from_ID='$logged' || to_ID ='$logged')");    
$getmyfriendsnum=mysqli_num_rows($getmyfriends);
if($getmyfriendsnum !=0){
while($getmyfriendsrow=mysqli_fetch_assoc($getmyfriends)){
    $from_ID=$getmyfriendsrow['from_ID'];
    $to_ID=$getmyfriendsrow['to_ID'];
        if($from_ID==$logged){
            $myf=$to_ID;
        }else if($to_ID==$logged){
            $myf=$from_ID;
        }
   }
}

现在,我正在尝试从表用户

中获取我的非朋友ID
$getalluser=mysqli_query($con, "SELECT * FROM `users` WHERE `id`!='$myf' ");
$getallusernum=mysqli_num_rows($getalluser);
if($getallusernum !=0){
while($getalluserrow=mysqli_fetch_assoc($getalluser)){
    $nonfriendid=$getalluserrow['id'];
    echo $nonfriendid."</br>";
    }
}

我没有得到非朋友的真实身份。即使我尝试将第二个查询放入第一个while循环中,这也很糟糕,实际上,我也不会理解INNER JOIN。

谁能让非朋友的身份......进入第二次循环。

1 个答案:

答案 0 :(得分:0)

select 
`id` 
from 
`users` 
where 
`id` 
not in 
    (select 
     `from_ID` 
     from 
     `fnf`) 
and 
`id` 
not in 
    (select 
     `to_ID` 
     from 
     `fnf`)