200分,查询问题/(100分)

  • 主题发起人 主题发起人 chenhw
  • 开始时间 开始时间
C

chenhw

Unregistered / Unconfirmed
GUEST, unregistred user!
有2个表的结构是:
第一表:
PNO(编号1),PNO2(编号2) PNUM(数量)
001 002 4
001 003 5
002 004 6
002 005 1
.....


第二表:
PNO PNAME
001 针车
002 挡板
.....

这个表的组成是:
001(针车)由 002(挡板) 4个
002(挡板)由 006 (..) 6个


可能这就是嵌套表吧,我也不知道,
现在我想将这两个表联系,生成一个物料表.

001(针车)
002(挡板) 4个
004 6个
005 1个
003(..) 5个

.....

我想用一个查询语句将它搞定,不知可否?
望解答!谢谢!
 
这是一个BOM问题,用一个SELECT语句搞不定。
而且你的表中还应该有一项标记,表示此项目是叶子。
可能的方案是采用递归调用,不是叶子的时候就展开。

 
生成一个物料表?是新建一个物料表用于保存还是只要查询出来?
如果新建请指明结构。如果只是显示请指明显示效果。
 
1)生成一个视图,再查询
2) 此表设计不合理,查询反而降低效率。
2)带子查询的SQL
select t2.pname, (select distinct t2.pname where t1.pno2 = t2.pno), t1.pnum
from t1, t2
where t1.pno = t2.pno
没环境试过,你试试。
 
用inner join是解决问题的关键,你说的问题我没太看懂,你先参考一下
下面这个SQL.
select count_fee.starttime,count_fee.caller,count_fee.answer,datediff(second,count_fee.starttime,count_fee.endtime) as Date_Diff,game.price from count_fee inner join game on(count_fee.answer='239'+game.code) where count_fee.Starttime>=:S_Time and count_fee.Starttime<:E_Time order by count_fee.starttime"
晚上我再仔细看一下你的问题再给你答复(或者你应该再说的清楚一点).
 
刚才那句SQL最后的"应去掉
 
先用外联将两表建成一个视图,
PNO(编号1),PNO2(编号2) PNUM(数量) PNAME
001 002 4 针车
001 003 5 针车
002 004 6 挡板
在客户端显示时用递归的查询方法即可。
 
多人接受答案了。
 
后退
顶部