查看: 1463|回复: 18
|
SQL 的问题 (新问题)
[复制链接]
|
|
有个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 ] |
|
|
|
|
|
|
|
发表于 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 ] |
|
|
|
|
|
|
|
楼主 |
发表于 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" 的用法, 有人可以给我解释解释吗?? |
|
|
|
|
|
|
|
发表于 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绝对没问题. |
|
|
|
|
|
|
|
发表于 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'
谢谢 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|