佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1464|回复: 18

SQL 的问题 (新问题)

[复制链接]
发表于 24-2-2005 06:33 PM | 显示全部楼层 |阅读模式
有个SQL 的问题

tblA
ID(char)         numberA(numeric)        
001                   10                       
003                   20                        
004                   30                        


tblB
ID(char)         numberB(numeric)        
001                   80                       
002                   90                        
003                   100
004                   50
005                   60
                        

如何用SQL弄成下面的result呢?

tblResult
ID(char)          numberA or numberB(which ever smaller)      
001                   10                       
002                   90                        
003                   20
004                   30
005                   60           

1. 在tblA的ID肯定也会出现在tblB里面
2. tblB的ID不一定会出现在tblA里面,所以tblA是tblB的subset


请各位大大帮忙, 感激不尽。谢谢。

[ Last edited by DRAGONISM on 20-4-2005 at 02:37 PM ]
回复

使用道具 举报


ADVERTISEMENT

发表于 25-2-2005 08:56 AM | 显示全部楼层
select * from tblA
union
select * from tblB
where id not in (select id from tblA)
回复

使用道具 举报

发表于 25-2-2005 09:42 AM | 显示全部楼层
先制作一个 view, View1

SELECT tB.ID AS tID, tB.numberB AS tNumber FROM tblB tB UNION
SELECT tA.ID AS tID, tA.numberA AS tNumber FROM tblA tA


然后再执行以下的:

SELECT tblB.ID, (SELECT TOP 1 tNumber FROM View1 WHERE tID = tblB.ID) AS t_num FROM tblB
回复

使用道具 举报

发表于 25-2-2005 10:06 AM | 显示全部楼层
bltee 于 25-2-2005 08:56 AM  说 :
select * from tblA
union
select * from tblB
where id not in (select id from tblA)


select * from tblA
union
select * from tblB
where id not in (select id from tblA)
order by id
;
回复

使用道具 举报

发表于 25-2-2005 10:17 AM | 显示全部楼层
select * from tblB
union
select tblB.* from tblA, tblB
where tblA.id <> tblB.id
order by id
;
回复

使用道具 举报

 楼主| 发表于 25-2-2005 10:22 AM | 显示全部楼层
谢谢帮助。

但是如果我的tblA的ID是会重复的,就好像下面:

tblA
ID(char)         numberA(numeric)        
001                   10                       
003                   20                        
004                   30  
003                    0   


tblB
ID(char)         numberB(numeric)        
001                   80                       
002                   90                        
003                   100
004                   50
005                   60
                        


select * from tblA
union
select * from tblB
where id not in (select id from tblA)
order by id

的result是
tblResult
ID(char)          numberA or numberB(which ever smaller)      
001                   10                       
002                   90   
003                    0
003                   20                    
004                   30
005                   60

003被重复了!


如何用SQL弄成下面的result呢?

tblResult
ID(char)          numberA or numberB(which ever smaller)      
001                   10                       
002                   90                        
003                    0
004                   30
005                   60

[ Last edited by DRAGONISM on 25-2-2005 at 10:26 AM ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 25-2-2005 11:03 AM | 显示全部楼层
DRAGONISM 于 25-2-2005 10:22 AM  说 :
谢谢帮助。

但是如果我的tblA的ID是会重复的,就好像下面:

tblA
ID(char)         numberA(numeric)        
001                   10                       
003                   20              ...



暂时找到了我的答案。

select ID, min(numA) from tblA
group by ID
union
select * from tblB
where id not in (select id from tblA)
order by id

谢谢

[ Last edited by DRAGONISM on 25-2-2005 at 11:14 AM ]
回复

使用道具 举报

发表于 16-3-2005 04:08 PM | 显示全部楼层
我有个SQL问题想问大家, 现在我有一个table, 如下 :
Table Master
DO  A            B          Qty         
1   001        002         300
2       001        003         100
3   003        004     400
4       003        002         100
5   001        002      100
6   003        004         200

注: DO 是 primary key

而现在我要把它 call 出一个这样的 report 里面, 如下 :

Report :
A   B   Qty
001  002  400
001      003      100
003  004  600
003      002      100

注意哦...., 当 一个DO 的 A n B 和另一个DO 的 A n B 一样时,它们的QTY 就会相加 ; 如A n B 不一 样时就会是一个新的record, Sum Qty 我已经做到了,可是我 print 出来的report 一直 重复, 如下 :

A   B   Qty
001  002  400
001      003      100
003  004  600
003      002      100
001      002  400
003      004      600


红色的那两行重复了, 我该怎么做呢??
是要用  "create index "  statement 在 SQL command 里吗?? 我不很明白 "create index" 的用法, 有人可以给我解释解释吗??
回复

使用道具 举报


ADVERTISEMENT

发表于 17-3-2005 07:37 AM | 显示全部楼层
每人可以回答我吗???
回复

使用道具 举报

 楼主| 发表于 17-3-2005 03:19 PM | 显示全部楼层
select A, B, sum(Qty) from Master group by A, B order by A
回复

使用道具 举报

发表于 18-3-2005 09:41 AM | 显示全部楼层
Dragon, 我试过你的方法,可是我还是面对小小问题,but anyway,谢谢你, 等我在研究研究,不行再上帖!!
回复

使用道具 举报

发表于 18-3-2005 02:47 PM | 显示全部楼层
如果我现在的情况是这样呢??
Table Master
LotNo    LA           LB          Qty         
111a     001        002         300
111b           001        002         200
111a     001        003         100
111b           001        003           50
222a     003     004   300
222b           003        004         200


注: (LotNO + LA + LB)  才会= primary key

而现在我要把它 call 出一个这样的 report 里面, 如下 :

Report :
When LotNo = "111x"   (注: x 代表无论 a 或 b )
LA   LB   a.Qty  b.Qty  
001   002      300    200 
001   003      100      50

我该怎么做呢??
我想得有点乱了, 不知怎么做, 不需要用index 吗??
index 怎么用??
回复

使用道具 举报

发表于 19-3-2005 12:22 AM | 显示全部楼层
select LA, LB, max(Qty) as a.Oty,
(select min(Qty) from master a where a.Lot_no = b.Lot_no) as b.Qty
from master b
where LotNo like "111%"

其实有很多方法可以用.
回复

使用道具 举报

发表于 23-3-2005 11:36 AM | 显示全部楼层
请问以下SQL statement 有什么问题??
SQL = "select  empNO  from Product where Trim(EmpNo) like %A% "

"Trim(EmpNo) like %A% " 有什么问题,为什么run时一直有debug point to "%A%" ?? 是不是少了什么 " or ' or ....的符号?我用的是VB coding 6.0
回复

使用道具 举报

 楼主| 发表于 23-3-2005 07:44 PM | 显示全部楼层
试试看

SQL = "select  empNO  from Product where Trim(EmpNo) like '%A%' "
回复

使用道具 举报

发表于 25-3-2005 09:37 PM | 显示全部楼层
试试看

SQL = "select  empNO  from Product where rtrim(ltrim(EmpNo)) like '%A%' "

不过要看你用的是什么DB. 如果是SYBASE的话, 用以上的SQL绝对没问题.
回复

使用道具 举报


ADVERTISEMENT

发表于 26-3-2005 07:35 AM | 显示全部楼层
DRAGONISM 于 23-3-2005 07:44 PM  说 :
试试看

SQL = "select  empNO  from Product where Trim(EmpNo) like '%A%' "



谢谢了,我已成功弄到了!! 奇怪,之前我也try过这方法,都不行; 可是这次试又行了!! ei, 无论如何, 谢谢lor!!
回复

使用道具 举报

发表于 8-4-2005 04:54 PM | 显示全部楼层
select A
use Parent
select B
use Master index Master
select A
set relation to Field2 into Master
set filter to Ref="inv"

SQL 语法是怎样的?
Parent.Field2 留白的也要显示。
回复

使用道具 举报

 楼主| 发表于 17-4-2005 07:40 PM | 显示全部楼层
请问下面的SQL可以在Sybase执行吗?因为我时常得到msgbox说"error 在inner的部分"

select * from tblA a inner join tblB b on a.aid = b.bid
where a.aid = '121'

谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 27-11-2024 05:06 AM , Processed in 0.123373 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表