日期:2014-05-18  浏览次数:20978 次

问一个SQL的存贮过程
我要从两张视图中写一个查询的存贮过程,要求如下:
假定视图一,二中数据分别如下:
PanelID=@PanelID为变量.
视图一:
PanelID line Step ...其它列不重要了
an 1 1
bn 2 1
cn 2 2
dn 3 1
视图二:
PanelID line Step ...其它列不重要了
an 1 1
bn 2 1
cr 2 2
dr 3 1
这里的PanelID其实是同一个PCBA板子.后面的N和R代表正常和反修过的.
现在我要实现如下查询,
一,如何用模糊询查将两个PanelID一一对应也就是查询后的内容要求如下:

PanelID line Step Rework --这里的Rework就是视图二中的PanelID
an 1 1
bn 2 1
cr 2 2 cn
dr 3 1 dn


请问这个存贮过程如何写,谢谢

------解决方案--------------------
是不是line和step相同就放一列?panelID相同就合并?
你问题描述的太不清楚了。
------解决方案--------------------
up
------解决方案--------------------
select PanelID,line,Step,(select PanelID from 视图二 where a.line=line and Step=b.step)as Rework from 视图一 a
------解决方案--------------------
SQL code


select b.PanelID,b.line,b.Step,left(a.PanelID,1)+'n' as Rework from 视图一 a INNER JOIN 视图二 b on left(a.PanelID,1)=left(b.PanelID,1) and a.line=b.line and a.Step=b.Step

------解决方案--------------------
没有关键字,建议设置一个二者都有的主键,这样实现比较容易。比如你可以给每个视图增加一个自增长的编号,查询时根据编号进行模糊查询
------解决方案--------------------
需求没有描述清楚
------解决方案--------------------
select distinct * from (select PanelID,line,Step,b.PanelID as Rework from 视图一 a inner join 视图二 b
 on a.line=line and Step=b.step)

------解决方案--------------------
select distinct * from (select PanelID,line,Step,b.PanelID as Rework from 视图二 a inner join 视图一 b 
on a.line=line and Step=b.step) 

按照你给出的结果数据应该是这样的
------解决方案--------------------
去sql区会更快
------解决方案--------------------
还是没大明白你的需求。

能不能这样理解:表1 记录的是PCB板的信息, 表2是记录哪些PCB板被维修过。 你的查询是想在查询表1里面的信息的同时,知道每个PCB板是否有对应的维修记录,如果是维修过的,则把相应的维修信息列出来?


如果是这样,你只需要做一个外关联,或者是写一个函数即可,简单方便。
------解决方案--------------------

select a.PanelID 正常,
(select b.PanelID from 表2 b where b.PanelID = a.PanelID) 维修
from 表1 a