能解决,立即给分,急急急急急急急急(100分)

  • 主题发起人 主题发起人 SmallA
  • 开始时间 开始时间
S

SmallA

Unregistered / Unconfirmed
GUEST, unregistred user!
我用VFP 查找记录,如下
SELECT table1.field1,table1.field2,table1.field3,table1.field4,;
table1.fieldN,table2.field1,table2.field2,table2.field3;
FROM C:/数据库!table1,C:/数据库!table2;
WHERE table1.field1=aa and between(ctod(table1.field1=date),date1,date2);
表中是没有重复的记录的,但查出来,都好象是COPY 一样,把记录COPY 了几百分

我用过如下又少了记录
SELECT table1.field1,table1.field2,table1.field3,table1.field4,;
table1.fieldN,table2.field1,table2.field2,table2.field3;
FROM C:/数据库!table1;
inner join c:数据库!table2 ON table2 .field1=table1.field1
WHERE table1.field1=aa and between(ctod(table1.field1=date),date1,date2);

救救我,或其他办法呢
 
VFP应该一样的吧,请说几句啦
 
SELECT table1.field1,table1.field2,table1.field3,table1.field4,;
table1.fieldN,table2.field1,table2.field2,table2.field3;
FROM C:/数据库!table1,C:/数据库!table2;
WHERE table1.field1=aa and table1.field1=table2.field1
and between(ctod(table1.field1=date),date1,date2);
 
当然查出来是很多了
因为你是从两个表中查出来的
并且两个表间没有连接条件

根据集合的理论 select 是一种集合的映射 它查出的集合的元素个数是 m*n
m是table1 中元素个 n 是table2中的元素个数
也就是说
你第二种方法因为有了连接条件(table2 .field1=table1.field1)所以少了很多
解决的方法就是加一个连接的条件
SELECT table1.field1,table1.field2,table1.field3,table1.field4,;
table1.fieldN,table2.field1,table2.field2,table2.field3;
FROM C:/数据库!table1,C:/数据库!table2;
WHERE table1.field1=aa and between(ctod(table1.field1=date),date1,date2);
and table1.field1=table2.field1 ' 加上这名就行了
___________________________________



 
都试过,不行
 
试一下这个:
SELECT table1.field1,table1.field2,table1.field3,table1.field4,
table1.fieldN,table2.field1,table2.field2,table2.field3
FROM C:/数据库!table1
left join //----或者写 left out join 试试----
C:/数据库!table2
ON table2.field1=table1.field1
WHERE table1.field1=aa and between(ctod(table1.field1=date),date1,date2);
 
建立表之间的连接,否则查出的是迪卡尔乘积
 
table1和table2的关系你没有搞清楚
加上关系限制就好了
你在视图里面,把talbe1和table2两个表加进去,两表的关系马上就出来了
在这里面试试
 
table1和table2的关系你没有搞清楚
你将两表的关系建立起来不就行了。
这问题到此吧。
 
netatom的命令应该是可以的
求table1和table2的交集
SELECT table1.field1,table1.field2,table1.field3,table1.field4,;
table1.fieldN,table2.field1,table2.field2,table2.field3;
FROM C:/数据库!table1,C:/数据库!table2;
WHERE table1.field1=aa and table1.field1=table2.field1;
HAVING between(ctod(table1.field1=date),date1,date2)
 
后退
顶部