2011-12-21 40 views
0

那么,我在sql数据库中有两个表格。一个有一个ID列和它的描述。从第一个表格中选择数据并获得表格1中第二个表格的2列的字段

第二个表中有许多RefID1和RefID2中的两个特定列,因此它们都有来自第一个表的ID。

现在的问题是,我想从表2中编写一个sql select语句,并在RefID1和RefID2而不是数字ID的位置显示第一个表的描述。

希望我解释我的问题:)

我将是您的答复非常感谢清楚。

问候,

Mujtaba Panjwani

+0

描述对refID1或refId2您希望从(tabl1)返回的所有领域?您可以通过任何方式查看Inner Join。 – Zohaib 2011-12-21 04:59:23

+0

我不明白为什么这需要一个内部连接。如果RefID1被设置且RefID2不是,反之亦然。 – 2011-12-21 05:11:00

回答

2

此语句允许任RefID1或RefID2是空的可能性。如果相应的RefID#为空,它将为a.description或b.description返回空值。从返回RefID1和RefID2停止查询的唯一办法是明确列出,而不是使用A. *

SELECT A.*, B.description as description1, C.description as description2 FROM tabl1 A 
LEFT JOIN tbl2 B on a.RefID1 = B.ID 
LEFT JOIN tbl2 C on a.RefID2 = C.ID 
+0

非常感谢。它完美地解决了这个问题。 – 2011-12-26 07:39:04

1
select first.description , second.description from tableone 
left join 
(select a.id, a.description from tableone a inner join tabletwo b on a.id = b.RefID1)first 
on first.id = tableone.id 
left join 
(select a.id, a.description from tableone a inner join tabletwo b on a.id = b.RefID2)second 
on second.id = tableone.id 

select a.description , b.description from tabletwo left join tableone a 
    on tabletwo.RefID1 = a.id left join tableone b 
    on tabletwo.RefID2 = b.id 
+2

-1我**真的**不认为这是解决方案。 – 2011-12-21 05:13:38

+0

那么,你的第一个解决方案对我来说太复杂了,以致于我无法将其转化为我的场景,而第二种解决方案的工作原理与@ malcolm-ohare实际上是一样的,所以非常感谢帮助:) – 2011-12-26 07:47:15

相关问题