从没有外键的表中获取数据

时间:2015-02-11 09:46:01

标签: join inner-join cross-join

我需要一个查询帮助来从3个表中获取数据,如下所示。

表T1 - 将tID作为主键 表T2 - TID是此表中的外键 表T3 - rname等于t2中的rname,但这两个表不相关。

我尝试使用内部联接,但没有提供所需的结果(在所有行中显示相同的SREF值),而且Cross join会生成产品。

请你帮忙,以便我得到所需输出部分的输出。

由于

加甘

创建表t1(tID,ts,Val)作为选择
1,to_date('2/2/2015 12:05','MM / DD / YYYY HH24:MI'),1来自双联盟全部选择
2,to_date('2/2/2015 12:05','MM / DD / YYYY HH24:MI'),2来自双联盟所有选择
3,to_date('2/2/2015 12:05','MM / DD / YYYY HH24:MI'),2来自双联盟全部选择
1,to_date('2/2/2015 12:10','MM / DD / YYYY HH24:MI'),1来自双联盟全部选择
2,to_date('2/2/2015 12:10','MM / DD / YYYY HH24:MI'),2来自双联盟所有选择
3,to_date('2/2/2015 12:10','MM / DD / YYYY HH24:MI'),2来自双联盟所有选择
1,to_date('2015年2月2日12:15','MM / DD / YYYY HH24:MI'),双联盟中的null全部选择
2,to_date('2/2/2015 12:15','MM / DD / YYYY HH24:MI'),3来自双联盟所有选择
3,to_date('2/2/2015 12:15','MM / DD / YYYY HH24:MI'),2来自双联盟全部选择
1,to_date('2/2/2015 12:20','MM / DD / YYYY HH24:MI'),双联盟中的null全部选择
2,to_date('2/2/2015 12:20','MM / DD / YYYY HH24:MI'),1来自双联盟全部选择
3,to_date('2/2/2015 12:20','MM / DD / YYYY HH24:MI'),3来自双联盟全部选择
1,to_date('2015年2月2日12:25','MM / DD / YYYY HH24:MI'),双联盟中的null全部选择
2,to_date('2/2/2015 12:25','MM / DD / YYYY HH24:MI'),10来自双联盟所有选择
3,to_date('2/2/2015 12:25','MM / DD / YYYY HH24:MI'),9来自双联盟全部选择
1,to_date('2/2/2015 12:30','MM / DD / YYYY HH24:MI'),1来自双联盟所有选择
2,to_date('2/2/2015 12:30','MM / DD / YYYY HH24:MI'),2来自双联盟全部选择
3,to_date('2/2/2015 12:30','MM / DD / YYYY HH24:MI'),1来自双联盟全部选择
1,to_date('2015年2月2日12:35','MM / DD / YYYY HH24:MI'),双联盟中的null全部选择
2,to_date('2/2/2015 12:35','MM / DD / YYYY HH24:MI'),2来自双联盟所有选择
3,to_date('2/2/2015 12:35','MM / DD / YYYY HH24:MI'),1来自双联盟全部选择
1,to_date('2/2/2015 12:40','MM / DD / YYYY HH24:MI'),从双联盟中取消全部选择
2,to_date('2/2/2015 12:40','MM / DD / YYYY HH24:MI'),2来自双联盟所有选择
3,to_date('2/2/2015 12:40','MM / DD / YYYY HH24:MI'),2来自双重;

创建表t2(tID,sname,rname)作为选择
1,SN1,RN1来自双联盟全选 2,SN2,RN2来自双联盟全选 3,SN3,RN3来自双联盟全选 4,SN4,RN4来自双联盟全选 5,SN5,RN5来自双联盟全选 6,SN6,RN6来自双联盟全选 7,SN7,RN7来自双联盟全选 8,SN8,RN8来自双联盟全选 9,SN9,RN9来自双联盟全选 10,SN10,RN10来自双;

创建表t3(rid,rname,sref)作为选择
来自双联合的R1,RN1,SREF1全部选择
来自双联的R2,RN2,SREF2全部选择
来自双联合的R3,RN3,SREF3全部选择
来自双联的R4,RN4,SREF4全部选择
来自双联盟的R5,RN5,SREF5全部选择
来自双联盟的R6,RN6,SREF6全部选择
来自双联合的R7,RN7,SREF7全部选择
R8,RN8,SREF8来自双联盟全选 R9,RN9,SREF9来自双联盟全选 R10,RN10,SREF10来自双;

输出所需

TID,SNAME,RNAME,SREF1
1,SN1,RN1,SREF1
2,SN2,RN2,SREF2
3,SN3,RN3,SREF3

1 个答案:

答案 0 :(得分:0)

您写道:“表T1 - 将tID作为主键表T2 - TID是此表中的外键”,但在示例中它是相反的方式。

你写道:“表T3 - sname在t2中等于sname,但是这两个表没有关系。”但是T3中没有sname

您尝试过: select t1.TID, t2.SNAME, t2.RNAME, t3.SREF from t1,t2,t3 where t1.tid=t2.tid and t2.rname=t3.rname