SQL查询加入2个表

时间:2015-01-24 03:38:34

标签: sql join

我无法使用以下表格形成查询,这些表格将查找Note表格中的所有Notes,该表格由属于登录用户的同一公司的任何用户创建。

Note

note_id (int), 
note_text (varchar), 
created_by (int)

User

user_id (int), 
company_id (int)

登录用户的用户ID作为参数传递给查询。

我想从其中创建__的表Notes中获取注释(所有用户的user_id,其company_id = company_id为LOGGED_IN_USER)

请帮我制定一下查询。看起来非常直接,但是无法达到目的。

4 个答案:

答案 0 :(得分:3)

我不确定LOGGED_IN_USER是一个表还是另一个对象,但如果它是一个包含您引用的列的表,那么这样的连接就可以了。

select note_text
from Note n
JOIN User u ON u.user_id = n.created_by
JOIN LOGGED_IN_USER lin ON lin.user_id = u.user_id 
and lin.company_id = u.company_id

答案 1 :(得分:1)

你可能需要一个用于Notes的user_id的外键。并使用INNER JOIN

答案 2 :(得分:1)

感谢Vinnie和所有人的回复。我终于成功找出了查询。 LOGGED_IN_USER_ID只是一个应该传递给查询的数字参数。

 select n.* from Note n where
n.created_by in (
 select u1.user_id from User u1 inner join User u2
 on u1.company_id=u2.company_id and u2.user_id = :LOGGED_IN_USER_ID*
 )

再次感谢。

答案 3 :(得分:0)

如果我没有误解你的问题,请尝试这种方式

SELECT note_text
FROM Note n
INNER JOIN User u ON u.user_id = n.created_by
WHERE n.created_by= (select u.user_id from User where company_id=LOGGED_IN_USER LIMIT 1 )