Sql 从3个表中联接

Sql 从3个表中联接,sql,join,Sql,Join,我试图在一个视图中连接3个表;情况如下: 我有一个包含项目信息的表PROJECTS。表结构(id主键,project\u id) 我有另一个表PROJECT\u DESIGN,其中列出了项目中使用的图像。表结构(id,PROJECT\u id,image\u 1,image\u 2) 我有另一个表PROJECT\u MEMBERS,其中列出了项目中涉及的成员。表结构(id,PROJECT\u id,member\u name) 我在PROJECT\u DESIGN中有4个相关行,其中PROJEC

我试图在一个视图中连接3个表;情况如下:

我有一个包含项目信息的表
PROJECTS
。表结构(
id
主键,
project\u id

我有另一个表
PROJECT\u DESIGN
,其中列出了项目中使用的图像。表结构(
id
PROJECT\u id
image\u 1
image\u 2

我有另一个表
PROJECT\u MEMBERS
,其中列出了项目中涉及的成员。表结构(
id
PROJECT\u id
member\u name

我在
PROJECT\u DESIGN
中有4个相关行,其中
PROJECT\u id=11
。 我在
PROJECT\u成员中有两个相关行
PROJECT\u id=11

我希望以以下方式显示数据,仅显示4行,如

id  project_title   image_1     image_2     member_name
11  test_1232321    118.png     s118.png    member_1
11  test_1232321    13.png           8.png      member_2
11  test_1232321    18.png           78.png     member_1
11  test_1232321    908.png     18.png          member_2
我使用以下查询:

SELECT pm.id, pm.project_title, dm.image_1, dm.image_2,tm.name
FROM PROJECTS AS pm
INNER JOIN PROJECT_DESIGN AS dm ON pm.id = dm.project_id
inner join PROJECT_MEMBERS as tm on pm.id = tm.project_id 
AND pm.id = 11
它给出了以下结果:4*2

11  test_1232321    118.png     s118.png    member_1
11  test_1232321    13.png           8.png      member_2
11  test_1232321    18.png           78.png     member_1
11  test_1232321    908.png     18.png          member_2
11  test_1232321    118.png     s118.png    member_1
11  test_1232321    13.png           8.png      member_2
11  test_1232321    18.png           78.png     member_1
11  test_1232321    908.png     18.png          member_2
请帮忙。提前谢谢你。

试试看

SELECT pm.id, pm.project_title, dm.core_design, dm.overlay_design, dm.orientation, tm.name, tm.designation, tm.image
FROM PROJECTS AS pm
INNER JOIN PROJECT_DESIGN AS dm ON pm.id = dm.project_id
inner join PROJECT_MEMBERS as tm on pm.id = tm.project_id 
WHERE pm.id = 11
GROUP BY pm.id
和使其成为联接条件的一部分

添加了一个组

尝试选择不同的

SELECT DISTINCT pm.id, pm.project_title, dm.core_design, dm.overlay_design, dm.orientation, tm.name, tm.designation, tm.image
FROM PROJECTS AS pm
INNER JOIN PROJECT_DESIGN AS dm ON pm.id = dm.project_id
inner join PROJECT_MEMBERS as tm on pm.id = tm.project_id 
WHERE pm.id = 11
GROUP BY pm.id.

基于您提供的字段,我写了这篇文章,尽管我没有表的清晰描述,因为@user1281385说,篡改一些测试数据将有助于澄清

 CREATE TABLE Project_Design_INPUT AS 
 SELECT pm.id, pm.project_title, dm.image_1, dm.image_2
 FROM PROJECTS AS pm 
 INNER JOIN PROJECT_DESIGN AS dm ON pm.id = dm.project_id
 AND pm.id = 11


 SELECT pm.id, pm.project_title, pm.core_design, pm.overlay_design, pm.orientation, tm.name,  
 tm.designation, tm.image
 FROM Project_Design_INPUT AS pm
 inner join PROJECT_MEMBERS as tm on pm.id = tm.project_id 
 WHERE pm.id = 11  

你也应该按pm分组。我上面的查询也有同样的问题。返回8行而不是4行。通过添加group by,它只返回1行,实际上id 11在项目设计中有4行相关行,项目成员中有2行相关行。你能让SQL摆弄一些测试数据吗?