【问题标题】:Joining two tables with conditon连接两个有条件的表
【发布时间】:2017-06-29 08:57:09
【问题描述】:

我有两张桌子:

users
- id
- fname
- lname
- is_online

和:

friendships
- friendA (references users)
- friendB (references users)
- status (1 means they are friends)

我想查询给定用户的所有在线好友。

【问题讨论】:

  • 样本数据和期望的结果确实有助于传达您想要做的事情。如果您正在学习 SQL,则应该包括您回答问题的尝试。
  • 尝试 INNER JOIN 查询
  • SELECT T1.fanme,T2freindA, FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id=T2.id WHERE T1.IS_ONLINE=1

标签: php sql database laravel-5


【解决方案1】:
SELECT
t1.*
FROM users t1
WHERE
t1.id IN (
    SELECT
    friendB
    FROM friendships
    WHERE
    friendA = CURRENT_USER_ID
    UNION
    SELECT
    friendA
    FROM friendships
    WHERE
    friendB = CURRENT_USER_ID
)
t1.is_online = 1
AND NOT t1.id = CURRENT_USER_ID

【讨论】:

    【解决方案2】:
    Select 
        Unique(id) 
    from 
        users outer join 
        friendships where 
            ((friendA = id and friendB = ID_TO_QUERY) or 
             (friendA = ID_TO_QUERY and friendB = id) and status = 1) 
            and is_online = true 
            and id /= ID_TO_QUERY
    

    【讨论】:

      猜你喜欢
      • 2017-08-25
      • 2015-01-12
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      相关资源
      最近更新 更多