免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11942 | 回复: 6

一个关羽Join的SQL问题 [复制链接]

论坛徽章:
0
发表于 2013-08-09 17:59 |显示全部楼层
现在有两个表,表1是Herder file(Order, ), 表2为Detail file(Order, Order line),两表之间是1:n的关系。n是未知的。现在想通过一系列Join语句,把两个表Join出一个以Order为第一列, 所有与Order相等的Orderline都排在Order的后面,怎么用Join来实现??或者有没有别的好方法??
表现效果如下:

Order1 ,line1, line2, line3,,,,,line i
Order2 ,line1, line2, line3,,,,,line j
Order3 ,line1, line2, line3,,,,,line k
Order4 ,line1, line2, line3,,,,,line l

求千年大神现身。

论坛徽章:
0
发表于 2013-08-10 09:48 |显示全部楼层
有人会吗???
求大神。

论坛徽章:
0
发表于 2013-08-12 20:24 |显示全部楼层
假设 F1表 字段 O , F2表 字段 O、D,其中F1 : F2 =  1:N
需要的结果为:
O1 D1
O1 D2
O1 D3
O2 D1
O2 D2
O2 D3
那么SQL 有两种方法
1) SELECT F1.O ,F2.D FROM F1,F2 WHERE  F1.O = F2.O
2)   SELECT F1.O,F2,D FROm F1 INNER JION F2  ON F1.O=F2.O

论坛徽章:
0
发表于 2013-08-12 20:29 |显示全部楼层
如果记录为:
F1
   O1
   O2
   O3

F2
   O1,D1
   O1,D2
   O1,D3
   O3,D1
   O3,D2
   O3,D3

如果需要结果为 :
O1,D1
O1,D2
O1,D3
O2, null
O3,D1
O3,D2
O3,D3
则SQL为: SELECT F1.O,F2.D FROM F1 LEFT JOIN F2 WHERE F1.O=F2.O

论坛徽章:
0
发表于 2013-08-12 21:41 |显示全部楼层
我需要的结果是:
O1 , d1,d2,d3
O2, null
O3, d1,d2,d3,d4

回复 4# xml1988


   

论坛徽章:
0
发表于 2013-08-13 18:03 |显示全部楼层
回复 5# afeiau

那就做不到的
SELECT选择出来的列数在执行时肯定是已知的,而你这个列数是根据具体的行数来确定。


   

论坛徽章:
0
发表于 2013-08-13 18:12 |显示全部楼层
如果行数是确定的,比如固定是5行数据,那还好做。
反证下:
假设这个问题可以解决,那么下面的数据应该是可以输出的
F2
    O1,D1
    O1,D2
     ...
    O1,Dn

那么结果应该是O1,D1,D2....Dn, 对于未知的列数,SELECT如何获取?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP