选择";“朋友”;使用mySQL连接案例

选择";“朋友”;使用mySQL连接案例,mysql,join,case,Mysql,Join,Case,在这里,我发布了一个关于根据行中列的值进行联接的问题。 您需要的是创建一个添加好友功能,在该功能中,您将两个用户的ID写入user\u 1\u ID(我的ID)和user\u 2\u ID(好友ID)。 当您想查看您的好友时,请根据user\u 1\u id或user\u 2\u id是否具有超现实用户(正在浏览的用户)的id来选择 我知道了,下面是您需要使用的查询,以防您需要这样做 这是一个问题 $sql_inp = 'SELECT DISTINCT user

在这里,我发布了一个关于根据行中列的值进行联接的问题。 您需要的是创建一个添加好友功能,在该功能中,您将两个用户的ID写入
user\u 1\u ID
(我的ID)和
user\u 2\u ID
(好友ID)。 当您想查看您的好友时,请根据
user\u 1\u id
user\u 2\u id
是否具有超现实用户(正在浏览的用户)的id来选择

我知道了,下面是您需要使用的查询,以防您需要这样做

这是一个问题

$sql_inp = 'SELECT DISTINCT
                 users.id, users.first_name, users.last_name,
    CASE 
                 WHEN friends.user_2_id="'.$_SESSION[USER][id].'" //equal to current user id
                 THEN (SELECT friends.user_1_id FROM friends WHERE friends.user_2_id="'.$_SESSION[USER][id].'") // if user_2_id is My id, then fetch the other row
         ELSE friends.user_2_id // obviously the opposite
    END  
    FROM users
    LEFT JOIN friends ON users.id=    // this case is completely the same as one above
    CASE 
                 WHEN friends.user_2_id="'.$_SESSION[USER][id].'" THEN (SELECT friends.user_1_id FROM friends WHERE friends.user_2_id="'.$_SESSION[USER][id].'") 
    ELSE friends.user_2_id 
        END 
    WHERE  friends.user_1_id="'.$_SESSION[USER][id].'" OR  friends.user_2_id="'.$_SESSION[USER][id].'" // fetch the row where the either one of the values is equal to My id 
  ';

希望这有助于任何人遇到麻烦

就我个人而言,我讨厌使用CASE语句。这使得查询看起来杂乱无章。尝试使用

在这个查询中,如果table3.val1和table3.val2$user\u id,那么users\u fetch是-1


试试看

就我个人而言,我讨厌使用CASE语句。这使得查询看起来杂乱无章。尝试使用

在这个查询中,如果table3.val1和table3.val2$user\u id,那么users\u fetch是-1


试试看

对不起,我不明白你在找什么。你能把你的模式连同一些样本数据和一些预期结果一起发布吗?对不起,我不明白你在追求什么。你能把你的模式和一些示例数据以及一些预期的结果一起发布吗?我试着做了你所做的,你的代码非常有意义。即使在某些情况下,它也应该可以工作,但我不断收到错误消息。我尝试了你所做的,你的代码也很有意义。即使在某些情况下,它也应该工作,但我不断收到错误消息
$sql_inp = 'SELECT
    table1.val1,table1.val2,
            table2.val1,table2.val2,
            IF(table3.val1="'.$user_id.'",table3.val1,
            IF(table3.val2 ="'.$user_id.'",table3.val2,
            IFNULL(table3.val2,-1))) users_fetch
    FROM table1
    INNER JOIN table2 ON table2.val1=table1.val1
    LEFT JOIN table3 ON table2.val1=users_fetch';