我有三张桌子。一个包含备注Notes
,一个包含用户Users
,另一个包含用户和备注NotesUsers
之间的关系表。
用户
user_id first_name last_name
1 John Smith
2 Jane Doe
注释
note_id note_name owner_id
1 Math 1
2 Science 1
3 English 2
NoteUsers
user_id note_id
1 1
2 1
2 2
2 3
希望从select语句中你可以告诉我我想要做什么。我正在尝试选择user_id = 2
可以访问但不一定拥有的注释,但同时我还试图获取所有者的名字和姓氏。
SELECT Notes.notes_id, note_name
FROM Notes, NotesUsers
WHERE NotesUsers.note_id = Notes.note_id AND NotesUsers.user_id = 2
JOIN SELECT first_name, last_name FROM Users, Notes WHERE Notes.owner_id = Users.user_id
我的问题是因为WHERE
和first_name
的{{1}}条款与last_name
的条款不同,我不知道如何查询数据。我知道这不是notes
的工作方式
我不一定想使用JOIN
,但我不确定如何构造语句,所以我把它留在那里,以便你能理解我想要做的事情。
答案 0 :(得分:0)
您可以NoteUsers
加入Users
以检查访问权限,并SELECT n.noted_id, n.note_name, u.first_name, u.last_name
FROM Notes n
JOIN NoteUsers nu ON n.noted_id = nu.note_id AND nu.user_id = 2
JOIN Users u ON n.owner_id = u.user_id
将用户的详细信息添加到结果中:
docx_summary
答案 1 :(得分:0)
您需要在主查询中使用查询。 MySQL将首先返回note_id
用户user_id = 2
可以访问NoteUser
的所有first_name
,然后构建外部查询以返回last_name
和 SELECT u.first_name, u.last_name, n.note_name, n.note_id
FROM Notes AS n
LEFT JOIN Users AS u ON u.user_id = n.owner_id
WHERE n.note_id IN
(SELECT nu.note_id FROM NoteUser WHERE nu.user_id = 2)
所有者。
Gamma = mod(tril(bsxfun(@minus, (1:500).', 1:500)), 255);
%this 1:500 is for the inner loop---^ ^---This 1:500 is for the outer loop