sql - 加入2个表10次

Ste*_*ano 0 mysql sql database sqlite

我有2个像这样的结构表:

People
----------
>ID, Name, Surname

Projects
----------
>ID, Assistant#1,  Assistant#2,  Assistant#3,  Assistant#4, 
> Assistant#5,  Assistant#6,  Assistant#7,  Assistant#8,  Assistant#9, 
> Assistant#10, lot of other columns..... (every assistant column
> contains an integer, the people ID)
Run Code Online (Sandbox Code Playgroud)

现在,我想查询我的数据库并从Project表中获取一行(让我们假设ID = 3的行)包含项目表的所有列,特别是每个助手都用它的正确名称和姓氏替换.我已经设法做了这个(有很多连接),但是凭借我的小sql经验,我的代码看起来非常笨重,我确信有更好的方法来做到这一点.

提前致谢.

hkf*_*hkf 6

SELECT p.Name, p.Surname
FROM People p
CROSS JOIN Project j ON (p.PeopleID = j.Assistant1 OR
p.PeopleID = j.Assistant2 OR
p.PeopleID = j.Assistant3 OR
.. etc)
AND j.ProjectID = 3
Run Code Online (Sandbox Code Playgroud)

你的表现会很糟糕,但这是你为拥有一个设计糟糕的数据库而付出的代价.更好的解决方案是通过分解来映射项目和人员:

CREATE TABLE proj_people
People_ID INT
Project_ID INT
Run Code Online (Sandbox Code Playgroud)