关于SELECT 关联条件查询, 利用right outer join 查询2个表中的数据

[复制链接]
查看11 | 回复1 | 2011-1-30 09:30:13 | 显示全部楼层 |阅读模式
我把我的表简单的解释成这样...其实比这个咳复杂,只是来想听去一下意见。
我的设计师这样的, 在表A中有三个姓名 W1,W2,W3,
有两个表,一个工资加薪表:W1 加薪两次,每次500元,W2加薪,加了500元,
另外一个表示一个 扣工资表 W1 扣了1次,为200元,W3扣了2次为共计500元,
他们的几本工资是2000元,利用select 查询2个表,列出工资总数,和加薪和扣分情况(次数)
我的原表中是这样的:select ---学分=100-SUM(考勤表.缺课记录)+3*SUM(获得表.获奖)
就是在这个意思,缺课是1分每一次,获奖时每次奖励3分,
但是,我也试了,包括奖励临时表的形式,但是只有一个学生在具有缺课记录和获奖记录的同时的时候,才会输出成绩。
但是,如果两个只有一个应用的话,那么就显示为NULL!!所以这里是不是明白啊。。。想了1个多小时了。还是不得思路啊。。各位高人高见 啊。

回复

使用道具 举报

千问 | 2011-1-30 09:30:13 | 显示全部楼层
因为你用的是right outer join而Join的条件是建立在几个表有公共信息的前提下这里比如说是用户的id ,即三个表中的base_salary_id(基本工资)、 praise_id (奖励)、punish_id(惩罚)要他们都相等,这是没有问题的关键是,当一个学生没有缺课记录时候,那么在punishment表中是没有相应的punish_id的,你这个时候做外连接,这个学生在punishment表中没有能够符合base_salary_id= praise_id = punish_id 的记录,自然就是null了。。。奖励也是同样道理。解决方法就是,每个学生都要有punish_id、 praise_id 没有奖励
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行