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';