2017-02-07 36 views
0

我想检查我使用这样一个情况下,最好的方法:SQL,内部联接,2级表和2列的信息

2个表: 第一个表:关于发票的信息,尤其是与2列: => ID负责1(列id_user1)和ID RESPONSABLE 2(列id_user2) 表:tb_invoice

第二表:ID,所有responsables的名称。 表:tb_users(列:id_user,名字......)

而且用于获取有关发票上的2个responsables信息,我做链接是这样的:

select 
t1.*, 
tu1.name as responsable_1, 
tu2.name as responsable_2 
from 
tb_invoice t1 
inner join tb_users tu1 on tu1.id_user=t1.id_user1 
inner join tb_users tu2 on tu2.id_user=t1.id_user2 
where 
t1.num = 123456 

有另一种解决方案,更好的? 感谢您的帮助。

问候,

+1

别名't1'混淆。从您的问题,除了和格式化文本, – jarlh

+0

添加一些样本表数据和预期的结果。至于表格设计:这表明永远不会有两个以上的负责人,并且负责人1和负责人2之间的地位可能有所不同。对我来说看起来很好。一个单独的负责人表是否会更好或更糟取决于。 – jarlh

+0

与别名,这是一个非常坚实的方法 – JohnHC

回答

0

我定你的别名混乱(编辑你的问题)和您的查询是一个不错的解决方案

select 
t1.id, 
tu1.name as responsable_1, 
tu2.name as responsable_2 
from 
tb_invoice t1 
inner join tb_users tu1 on tu1.id_user=t1.id_user1 
inner join tb_users tu2 on tu2.id_user=t1.id_user2 
where 
t1.num = 123456 

如果一张发票只能有一个(或没有)RESPONSABLE所以它是推荐使用左加入而不是内部加入