Sql 从3个表中联接
我试图在一个视图中连接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
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摆弄一些测试数据吗?