Foxtable(狐表)用户栏目专家坐堂 → 请教:这个筛选表达式怎么写?


  共有35697人关注过本帖树形打印复制链接

主题:请教:这个筛选表达式怎么写?

帅哥哟,离线,有人找我吗?
reachtone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 9:30:00 [显示全部帖子]

用SQL语句可以直接得到:

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 10:22:00 [显示全部帖子]

这是外连接,只不过是把查询作为表而已。
它在内部表中应该也是可以通过的。这是标准的SQL语句,在用到内部表时,可能需要遵守狐表内部表的相关规则。
待会儿我在内部表里测试一下,刚才被狐表被NOD当作病毒删除了,重新下载。
[此贴子已经被作者于2009-4-21 10:27:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 10:56:00 [显示全部帖子]

由于上面的SQL语句是以查询代替表的,按照内部表的查询规则,表名要加上{},按说下面的语句在内部表查询中是可以通过的:
图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看
但在执行时报错!也许弧表只支持常规的表名、而不支持这种以查询作为表的情形吧。
实际上,在SQL语句的日常使用中,以查询作为表来使用的情况非常普遍。如果狐表不支持这样的内部查询的话,SQL将受很大限制(也许是因为我对狐表研究不深,不会操作)。
楼主可以将下面的语句放在“新增外部查询表”上执行一下,能正常得到结果:
SELECT B.姓名,A.职务,A.年龄 from (select 职务,max(年龄) as 年龄 from 表1 group by 职务) A LEFT JOIN (SELECT * FROM 表1) B on A.职务=B.职务 and A.年龄=B.年龄
这是测试用的数据库:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:db1.rar


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 11:21:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-4-21 11:09:00的发言:
不是全部都用大括号的,只有内部表的名称采用大括号,上面的SQL语句,只需将表1用大括号括起来即可。

OK。

[此贴子已经被作者于2009-4-21 11:32:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 12:25:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-4-21 12:09:00的发言:
A是(select 职务,max(年龄) as 年龄 from {表1} group by 职务)
B是(SELECT * FROM {表1})

排除重复:
SELECT Distinct B.姓名,A.职务,A.年龄 from (select 职务,max(年龄) as 年龄 from {表1} group by 职务) A LEFT JOIN (SELECT * FROM {表1}) B on A.职务=B.职务 and A.年龄=B.年龄
[此贴子已经被作者于2009-4-21 12:14:54编辑过]

这个语句:SELECT B.姓名,A.职务,A.年龄 from (select 职务,max(年龄) as 年龄 from {表1} group by 职务) A LEFT JOIN (SELECT * FROM {表1}) B on A.职务=B.职务 and A.年龄=B.年龄
实际上已经排除重复了,无需再加Distinct。因为是左连接,而左边的查询又是进行过分组的,如有相同职务相同年龄的,肯定只得到一条记录。


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 12:30:00 [显示全部帖子]

以下是引用cpayinyuan在2009-4-21 12:26:00的发言:

就是啊,这个问题该怎样解决呢?

这个结果正常啊!你要什么样的结果?职务相同、年龄相同的,只要取一个人?那取哪人呢?你提要求,我来给你修改一下语句就可以实现。


 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/21 12:39:00 [显示全部帖子]

其实,狐表所有的统计、关联查询功能用SQL语句都可实现,而且效率更高。
做数据库系统,手上有本SQL工具书是必须的。好好学习一下SQL吧   图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/4/22 9:39:00 [显示全部帖子]

将后面代表C的查询语句也加上同样的where条件。在你这个语句中,两个连接的查询,其条件是不一样的。加上distinct也可。
建议你找一下SQL的资料看看,也就是外连接的部分(分左外和右外),仔细研究一下就明白了。


 回到顶部