Sql 使用联接查询从四个不同的表中获取记录
表:员额Sql 使用联接查询从四个不同的表中获取记录,sql,sql-server,database,Sql,Sql Server,Database,表:员额 id user_id group_id Text 1 1 1 AAA 2 2 2 BBB 3 2 2 CCC 4 3 2 DDD 5 2 3 EEE 表:UserMaster user_id
id user_id group_id Text
1 1 1 AAA
2 2 2 BBB
3 2 2 CCC
4 3 2 DDD
5 2 3 EEE
表:UserMaster
user_id username
1 Raj
2 Meet
3 Kishan
表:小组
group_id groupname
1 JAVA
2 PHP
3 SEO
表:联合请求
id user_id group_id status
1 1 3 deactive
2 2 2 active
3 2 1 active
4 1 3 active
我的问题是:
//Help me improve my query to get the desired result.
select * FROM Post
where status = active in JoinRequest table
和用户_id='2'
预期结果:
id username Groupname Text
1 Raj JAVA AAA
2 Meet PHP BBB
3 Meet PHP CCC
4 Kishan PHP DDD
你可以得到这样的结果
SELECT P.id,
U.username,
G.Groupname,
P.Text
FROM Post P
INNER JOIN UserMaster U
ON U.user_id = P.user_id
INNER JOIN Groups G
ON G.group_id = P.group_id
INNER JOIN JoinRequest JR
ON P.user_id = JR.user_id
AND P.group_id = JR.group_id
WHERE JR.status LIKE 'active';
欢迎光临。请告诉我们您尝试了什么,以及您面临的问题。感谢您发布此问题的答案!代码只回答堆栈溢出问题,因为没有上下文的代码转储无法解释解决方案的工作方式或原因,使原始海报(或任何未来读者)无法理解其背后的逻辑。请编辑您的问题,并对您的代码进行解释,以便其他人可以从您的答案中受益。我不明白,我的答案实际上与后来提交并接受的答案完全相同,但这个答案显然是不可接受的?@sudhAnsu63:请不要将其他人的代码样式更改为您喜欢的样式。我喜欢答案中的代码和我的风格。谁说你的代码风格比我的好?只有在错误的时候才能改变!
Select p.id, um.username, g.Groupname, p.Text
From Post as p
JOIN UserMaster as um
ON p.user_id = um.user_id
JOIN Groups as g
ON p.group_id = g.group_id
JOIN JoinRequest as jr
ON p.user_id = jr.user_id
AND p.group_id = jr.group_id
WHERE jr.status = 'active'
SELECT P.id,
U.username,
G.Groupname,
P.Text
FROM Post P
INNER JOIN UserMaster U
ON U.user_id = P.user_id
INNER JOIN Groups G
ON G.group_id = P.group_id
INNER JOIN JoinRequest JR
ON P.user_id = JR.user_id
AND P.group_id = JR.group_id
WHERE JR.status LIKE 'active';