SQL从三个表中选择

SQL从三个表中选择,sql,select,join,Sql,Select,Join,我有三张桌子: Map_table - id - content_id - from_user_id - to_user_id - timestamp User_table - id - name Content_table - id - title 例如:我想从Map\u表中选择行,其中Map\u table.to\u user\u id=1 还提供User_table.name,其中Map_table.from_User_id=User_table.id 并提供Content_tabl

我有三张桌子:

Map_table
- id
- content_id
- from_user_id
- to_user_id
- timestamp

User_table
- id
- name

Content_table
- id
- title
例如:我想从Map\u表中选择行,其中Map\u table.to\u user\u id=1

还提供User_table.name,其中Map_table.from_User_id=User_table.id

并提供Content_table.title,其中Map_table.Content_id=Content_table.id

Map_table.content_id可能为null,因此无法映射到content_表

如果我在这里经历了一大堆的答案,仍然在拼命地寻找我需要的结果。 任何SQL专家都能看到一个简单的解决方案吗。所需的潜在连接正在折磨我的大脑

任何帮助都将不胜感激。为了我的头皮,除其他外;)


要做到这一点,您需要两次加入user_表。

从描述中可以看出,您的思路是正确的。你试过什么?奇怪的是,我从来没有收到回复通知,只是回来看看。。与此同时,我最终还是用下面Parkyprg给出的相同答案让它运行起来;)我试试贾斯汀的,看看哪个更快。感谢您的回复!头皮仍然完好无损。将此添加到末尾
,其中m.to_user_id=1
:)这就是我得到的结果。谢谢!;)他想筛选用户id=1的位置
SELECT m.id,m.content_id,m.from_user_id,m.to_user_id,m.timestamp,u.name,c.title
FROM Map_table m
INNER JOIN User_table u ON u.id = m.from_user_id
LEFT OUTER JOIN Content_table c ON c.id = m.content_id
WHERE m.to_user_id = 1
SELECT mt.*, ut.name, ct.title
FROM
     Map_table mt
INNER JOIN
     User_table ut on mt.from_user_id = ut.id
LEFT JOIN 
     Content_table ct on mt.content_id = ct.id
WHERE 
     mt.to_user_id = 1
SELECT mt.*, ut1.name
FROM map_table mt inner join user_table ut1 on mt.from_user_id = ut1.id
inner join user_table ut2 on mt.to_user_id = ut2.id
where mt.to_user_id = 1