标题:PB的data window的SQL问题, 如何才可以选择一个栏位两次?
只看楼主
yihuizeng
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-26
 问题点数:0 回复次数:22 
PB的data window的SQL问题, 如何才可以选择一个栏位两次?
SELECT LCAAPRC.CLMNUM,
LCAAPRC.SUBMITDTE,
LCAAPRC.SURNAME,
LCAAPRC.ASSESSOR,
(select LCALPF.PNDATE from LCALPF where
LCALPF.PNCODE like 'I%'),
(select LCALPF.PNDATE from LCALPF where
LCALPF.PNCODE like 'Q%'),
(select LCALPF.reslvdte from LCALPF where
LCALPF.reslvcde <> '')
FROM LCAAPRC,LCALPF

从这个SQL里面大家可以看到我一共提取了LCALPF.PNDATE这条数据两次, 不过是根据两条不同的where条件语句. 我的目的是提取PNDATE这个字段分别在LCALPF.PNCODE的开头字母是I 和 Q的时候, 如果按照我现在的SQL会出现我提取了多余一条数据的警告, 导致数据提取失败, 请问各位高人, 要如何才可以做得到呢??

谢谢
搜索更多相关主题的帖子: SQL data 栏位 window 选择 
2007-03-22 19:13
路過
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:160
专家分:111
注 册:2006-12-15
得分:0 
回复:(yihuizeng)PB的data window的SQL问题, 如何才...
SELECT A.SEQ,B.SEQ
FROM (SELECT TOPIC,SEQ FROM HELP WHERE SEQ LIKE '1%') A,
(SELECT TOPIC,SEQ FROM HELP WHERE SEQ LIKE '2%') B
WHERE A.TOPIC = B.TOPIC ;
顯示兩個欄位。topic是主健。
你那裡都沒有where條件
        

2007-03-23 09:31
yihuizeng
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-26
得分:0 
有一个问题, 我试过照你的sql来改我的语句, 不过

FROM (SELECT TOPIC,SEQ FROM HELP WHERE SEQ LIKE '1%') A,
(SELECT TOPIC,SEQ FROM HELP WHERE SEQ LIKE '2%') B
WHERE A.TOPIC = B.TOPIC ;

这一段, 在我的语句中, 例如, 我只需要选择SEQ而不需要选择Topic的, 所以我把他改变成: FROM (SELECT SEQ FROM HELP WHERE SEQ LIKE '1%') A,
(SELECT SEQ FROM HELP WHERE SEQ LIKE '2%') B
WHERE A.TOPIC = B.TOPIC ;
这样子就会显示说 topic not in table A in *N.
请问这样的情况要怎么解决? 谢谢

2007-03-23 10:15
路過
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:160
专家分:111
注 册:2006-12-15
得分:0 
裡面的TOPIC就是關聯用的呀當然是要的
(SELECT SEQ FROM HELP WHERE SEQ LIKE '2%') B
把TOPIC加進去就好啦,
打個比方:
我不知道LCAAPRC,LCALPF之間的關系,我現在假設欄位SUBMITDTE是兩個表的主健,以這個欄位相聯
就可以這個寫:

SELECT LCAAPRC.CLMNUM,
LCAAPRC.SUBMITDTE,
LCAAPRC.SURNAME,
LCAAPRC.ASSESSOR,
A.PNDATE,
B.PNDATE,
LCALPF.reslvdte
FROM LCAAPRC,LCALPF,
    (select SUBMITDTE,PNDATE from LCALPF where
LCALPF.PNCODE like 'I%') A,
    (select SUBMITDTE,PNDATE from LCALPF where
LCALPF.PNCODE like 'Q%') B
WHERE LCAAPRC.SUBMITDTE = A.SUBMITDTE AND
LCAAPRC.SUBMITDTE = B.SUBMITDTE AND
LCAAPRC.SUBMITDTE = LCALPF.SUBMITDTE AND
LCALPF.reslvcde <> ''



2007-03-23 14:02
yihuizeng
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-26
得分:0 
LCALPF里面有三个主键, 分别是CLMNUM, CHDRNUM, PNCODE, 那需要把这三个都加进去吗? 那这个SQL语句不是变得非常庞大了吗?? 谢谢
2007-03-23 14:17
notbig
Rank: 2
等 级:新手上路
威 望:5
帖 子:208
专家分:0
注 册:2006-11-27
得分:0 

楼主写法不正确
因为你SELECT每条记录却单个字段却是个多记录的集合
我不清楚楼主想要取什么数据。


http://www. email:notbig@ MSN:luozhihui@ ** QQ:2170913
2007-03-23 14:56
yihuizeng
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-26
得分:0 
不好意思,可能写得太混乱了吧, 我再说明一下, 我是想从LCALPF中提取一个叫PNDATE(照会日期)的字段. 不过我想通过两种不同的过滤条件来提取, 一个是当PNCODE(照会代码)的开头第一个字母是等于I时提取的PNDATE. 另外一个是当PNCODE(照会代码)的开头第一个字母是等于Q时提取的PNDATE. LCALPF这个table一共有三个primary key, 分别是, chdrnum, clmnum和pncode, 按照这个思路的sql应该怎么写呢? 谢谢
2007-03-23 15:10
路過
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:160
专家分:111
注 册:2006-12-15
得分:0 

你可以按照上面的方法自已試一下嗎?看一下數據拉出是不是對的。


2007-03-23 17:39
yihuizeng
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-26
得分:0 
我是想按照来做, 不过照你的方法, LCALPF里面有三个主键呢, 我需要除了PNDATE其他三个主键都全部要选择的话, 我的SQL语句会变得非常大, 这样提取数据的速度会降低而且我怕PB也跑不起太复杂的语句

谢谢
2007-03-23 22:50
notbig
Rank: 2
等 级:新手上路
威 望:5
帖 子:208
专家分:0
注 册:2006-11-27
得分:0 
select pndate from table where pncode like 'i%' or pncode like 'q%'

http://www. email:notbig@ MSN:luozhihui@ ** QQ:2170913
2007-03-24 22:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-125975-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.355008 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved