从三个表中进行 SQL SELECT

发布于 2024-11-07 14:50:55 字数 542 浏览 0 评论 0原文

我有三个表:

Map_table
- id
- content_id
- from_user_id
- to_user_id
- timestamp

User_table
- id
- name

Content_table
- id
- title

例如:我想从Map_table中选择行,其中Map_table.to_user_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_table

如果在这里已经经历了一大堆答案,但仍然费尽心思去获取结果,我 需要。 任何 SQL 专家都可以看到一个简单的解决方案吗?所需的潜在 JOIN 正在煎熬我的大脑。

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

I have three tables:

Map_table
- id
- content_id
- from_user_id
- to_user_id
- timestamp

User_table
- id
- name

Content_table
- id
- title

eg: I want to select rows from the Map_table where Map_table.to_user_id = 1

and also provide the User_table.name where Map_table.from_user_id = User_table.id

and also provide the Content_table.title where Map_table.content_id = Content_table.id

Map_table.content_id might be null and therefore not map to the Content_table

If been through a load of answers here and still tearing my hair out to get the results I need.
Can any SQL gurus out there see a simple solution. The potential JOINs required are frying my brain.

Any help would be much appreciated. For the sake of my scalp, among other things ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

帅的被狗咬 2024-11-14 14:50:55
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.*, 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
千笙结 2024-11-14 14:50:55
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 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
维持三分热 2024-11-14 14:50:55
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

您需要加入 user_table 两次才能执行此操作。

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

You need to join against user_table twice to do this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文