首页新闻找找看学习计划

求一条sql语句

0
[已解决问题] 解决于 2011-11-10 09:50
表A   有字段   ID       username     pric
                      1        xiaoli             5                         
                      2        xiaozhang      2                         
                      3       xiaowang       5
表B    有字段     ID     username     userni
                          1       xiaoli            xiaozhang
                          2       xiaoli            xiaoli
                          3       xiaoli            xiaozhang
                          4      xiaozhang     xiaowang
                          5      xiaozhang     xiaowang
表A 与表B之间的对应关系 表A 的username 字段 同时对应表B的username    和 userni 两个字段
首先 例如我根据条件 username等于"xiaozhang"或着userni 等于"xiaozhang"的时候
 我取表B的 count值  根据上面列举条件 表B的count值为4
现在我要查询出表A中 pric 的值减去表B中count值为1的值
但是现在表B中的结果可能不只一条 可能 count值等于4的结果有N条,
表A中每条记录的pric的值是不一样的
表B中count的值每个用户也是不一样的  
我要查询出的结果是 表A中每条记录的pric 减去 表B 中count值等于1的结果集合
我要查询出表A中满足条件的全部数据 
该怎么查呢我这个查询该怎么写呢
飞翔的鱼的主页 飞翔的鱼 | 初学一级 | 园豆:3
提问于:2011-05-27 14:43
< >
分享
最佳答案
0

DECLARE @a TABLE(id INT ,aname VARCHAR(1),pric INT )
DECLARE @b TABLE(id INT ,aname VARCHAR(1),bname VARCHAR(1))

INSERT INTO @a VALUES(1,'a',5)
INSERT INTO @a VALUES(2,'b',2)
INSERT INTO @a VALUES(3,'c',5)
INSERT INTO @b VALUES(1,'a','b')
INSERT INTO @b VALUES(2,'a','a')
INSERT INTO @b VALUES(3,'a','b')
INSERT INTO @b VALUES(4,'b','c')
INSERT INTO @b VALUES(5,'b','c')
SELECT * FROM @a
SELECT * FROM @b
--以上是初始化数据

--下面是答案
SELECT [@a].* FROM @a
INNER JOIN (
SELECT [@a].aname,COUNT([@a].id) AS countName FROM @a
INNER JOIN @b ON [@a].aname = [@b].aname OR [@a].aname = [@b].bname
GROUP BY [@a].aname
)t ON t.aname=[@a].aname
WHERE [@a].pric - t.countName=1

不知道是不是你想要的答案

路过看客 | 菜鸟二级 |园豆:205 | 2011-05-27 15:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册