簡體   English   中英

SQL-連接兩個表

[英]SQL - Join two tables

我有兩張桌子

用戶: (ID,名稱)

關系: (user_id,relationship_id)

User_id和Relation_id都是來自表users ID。

我想要的是恢復與特定用戶成為朋友的所有用戶。

這是我的sql命令:不起作用:

SELECT *
FROM users
NATURAL JOIN relations
WHERE user_id IN (SELECT id FROM users WHERE name='John doe');

你可以幫幫我嗎?

SELECT users.*
FROM relations
INNER JOIN users
  ON relations.relation_id = users.id
WHERE relations.user_id = 12345;

您還可以通過子查詢獲取ID,就像您在示例中所做的那樣:

WHERE relations.user_id IN (SELECT id FROM users WHERE name='John doe');

要獲得一個人擁有的所有關系,以下查詢將起作用。

SELECT * FROM users from us聯接關系on us.id = re.relation_id WHERE re.user_id =(SELECT id FROM users WHERE name ='John doe')

嘗試這個

SELECT * FROM users as a 
JOIN relations as b on a.id = b.user_id 
WHERE b.user_id IN (SELECT id FROM users WHERE name='John doe')
SELECT user_id
FROM relations re
JOIN users us
ON us.id = re.user_id
WHERE relation_id = (
    SELECT id
    FROM users
    WHERE name = 'John Doe'
)

注意:您不能在這里使用NATURAL JOIN ,因為在兩個表中沒有名稱和類型相同的列。

這不是僅通過您要查找的userId查詢關系表的問題嗎?

select * 
from relations
where  user_id = @IdYouArelookingFor or relation_id = @IdYouArelookingFor
SELECT friend.*
FROM users AS friend
  JOIN relations AS r
    ON r.relation_id = friend.id
  JOIN users AS u 
    ON u.id = r.user_id
WHERE u.name = 'John doe' ;

朋友是具有相同Relation_id的人嗎?

SELECT a.name FROM users a JOIN relations b on a.id = b.user_id
WHERE b.relation_id in 
(select relation_id from relations where id = 'userid of user you are looking for') 
AND a.id !=  'userid of user you are looking for'

如果您的邏輯不同,請告訴它如何工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM