# 这本就是and的结果!!

Posted by SQL on September 08, 1999 at 22:27:15:

In Reply to: 我这个SQL的意思是.......... posted by kkcheung on September 08, 1999 at 09:10:17:

: : : select sum(receive_rec.weight),sum(receive_rec.amount),sum(sale_rec.weight),sum(sale_rec.amount) from sale_rec,receive_rec where sale_date='19990907' and sale_rec.send_code='GZH' and receive_rec.in_date='19990907' and receive_rec.send_code='GZH'

: : : 上面的加总如果其一没有结果,会令其他的也查不出来,以怎样修改令查询到没有资料时,可以显示一个零,而不影响其
: : : 他有数据的.先谢谢大家.

: : 不大了解'其一没有结果会令其他也查不出来'是怎样的一
: : 个状况,但我觉得sum这个总计函数的使用及Where子句有
: : 点问题!!
: : 首先使用sum()应将结果导入一个栏位名称
: : 如sum(receive_rec.weight) as total_weight
: : 另两个Table间未使用join也未在where子句中设定关连......
: : 所以这个SQL应无法执行,可先解决这两个问题!!
: : ps.这个SQL是给Access,其他DBMS不确定可否使用

: 我的意思是如果sale_date='19990907' and sale_rec.send_code='GZH 这个有符合的加总,但
: receive_rec.in_date='19990907' and receive_rec.send_code='GZH'没有符合的资料,
: 在这个情形下四个数也没有加出来,我的想法是遇到上
: 述情形,一个条件符合的也显示符合的加总,不符合的即没有加总结果可以显示零.
: 另可否以上述例子,举出JOIN的用法我看书也不是大懂运用.谢谢.

1.and会要求左右两式皆成立才算符合条件,所以你想要符合
其中一个条件就select的话就改用or
2.join的用法有几种,而且有些DBMS如Informix的使用方
并不同,这里提出Access的,
3.select资料需先想好那一个Table为主,而那一个Table
要join进来,也就是说如以Table1为主,Table2为要join的
table,例如:
select Table1.*,Table2.* from Table1,Table2,Table2
right join Table1 on Table2.RelationField=
Table1.RelationField where 条件式
此时两个栏位的Field都会被select进来,但其中有两个需
注意的,Table1有的范围才会select,Table2是看Relation
的栏位符合才select进来,如果Table1有值,而相关连的
Table2没值,则Recordset中Table2的栏位为null
另由于Table2是join进table1,所以使用Recordset
修改Table2的栏位值有可能会出现错误

Follow Ups: