|
楼主 |
发表于 2010-1-17 21:24
|
显示全部楼层
谢谢
"记录"的概念又加深了我对表运算的理解
"Excel中的外部查询,到最终无论返回的是表、透视表还是透视图,在后台(内存中),我猜测,应该是以表的形式储存的。"
我想应该是这样的, 对于数据库来说, 应该先有字段,再有数据(文本和数字等), 然后构成一个完整的二维(行列)表. 同时, 在一个既定的表里, 数据或记录可以为空, 而字段不能.
SELECT查询的过程, 应该就是在表里定位对应的字段和记录, 构成一个我们想要的二维子表(可以由任意行列组成), 在这个二维子表里, 某行的数据的集合就是一条记录(正如Excel"数据" - "记录单"里所表示的)
多表合并, 同样是两个由SELECT定义的二维子表的合并, 这时匹配的条件可以是一个某条记录里的指针数据(唯一), 也可以如masterexcel所提到的&运算后的数据, 其实Left Join所合并的是两个加入&运算结果项的新的子表.
多表合并时, 如果某条记录(行)中选定字段(列)的数据不是唯一的, 则匹配时便构成了一个选择集合而不是指针, 当设定了多个这样的匹配条件时, 便成了集合与集合的运算(乘法), 于是就有了笛卡尔积(正如我上面用Where...And...定义的三个具有重复条目的字段)
所以我的结论是: 多表合并时, 只要选定字段(列)有重复的项目, 就需要进行&组合(有待高手检验)
跑题地提一下, Microsoft Query在应用上貌似还不如直接打SQL方便, 就比如我上面提到的情况, 有办法实现吗? 好处是能进行一些简单的合并. 或者还有一些帮助之外的技巧我没有掌握?
就总结到这里, 又算解决了一个问题, 不过后面还有更多的问题等着我...
软件只是工具, 但是将软件的潜能发挥出来, 它就可以是生产力, 对此我深信不疑 : ) |
|