主题:  SQL对ACCESS查询问题

三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#12006/5/11 18:53:18
我有两个表:会员表(userInfo)和店长表(regie)。
userInfo三个字段:userID(代码),wage(工资),isRegie(是否为店长)
regie两个字段:userID(代码),subsidy(津贴)
两个表用userID连接。如果userInfo中的isRegie为true,则regie必然有一条记录与该userID对应
查询要求:1、每条记录选取userID、wage、subsidy三个字段
2、userInfo中wage不为0的,全要;
3、userInfo中wage为0的,如果isRegie为true而且subsidy不为0的,也要。
例子:
userInfo中的数据如下:
A 100 true
B 0 true
C 100 true
D 0 true
E 100 false
F 0 false
regie中的数据如下:
A 0
B 50
C 50
D 0
选择结果应该是
A 100 0
B 0 50
C 50 50
E 100 (这里可以是空值)

编辑历史:[此帖最近一次被 zys59 编辑过(编辑时间:2006-05-11 21:23:40)]

闭起眼睛看人生

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22006/5/11 22:57:12
可以使用外联接查询

SELECT u.UserID, u.Wage, r.Subsidy FROM UserInfo u
LEFT OUTER JOIN Regie r
ON u.UserID = r.UserID
--WHERE u.IsRegie = true

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2006-05-11 23:02:35)]

非常大鱼

三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#32006/5/12 22:19:36
谢谢,鲸兄!我最终用下面的语句,解决了这个问题。
strSQL = "select A.userID,wage,subsidy from userInfo A left join regie B on A.userID = B.userID where (wage<>0) or (wage=0 and subsidy<>0)"
我现在对left join 和right join 这些东西都忘的差不多了,看来必须捡起来了,要不然真是寸步难行啊!还是SQL效率高,不服不行啊!


闭起眼睛看人生