2017-02-10 83 views
0

我有两个表:连接两个表与conditon

users 
- id 
- fname 
- lname 
- is_online 

和:

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

我想查询一个给定的用户谁是网上的所有朋友。

+0

样本数据和预期的结果真正帮助传达你想要做什么。如果你正在学习SQL,你应该包括你试图回答这个问题。 –

+0

尝试INNER JOIN查询 –

+0

SELECT T1.fanme,T2freindA,FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.IS_ONLINE = 1 –

回答

0
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 
0
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 
+0

请仔细地缩进您的查询,并使用代码格式。 – Barmar