2017-02-07 31 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所以它是推薦使用左加入而不是內部加入