以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157339)

--  作者:abcdzabcdz
--  发布时间:2020/10/12 19:44:00
--  sql问题

如何使用sql查询语句生成《班级安排表》中的考室列数据?

想使用sql查询语句生成《班级安排表》中的考室列数据,希望在《考室考号》表中查找出考室数据,条件是准考证号相同,且《考室考号》中类别列的值必须包含字(第一次使用sql语句,不要见笑啊)。谢谢!

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:1234.table


--  作者:有点蓝
--  发布时间:2020/10/12 20:27:00
--  
准考证号相同这个没看懂是什么意思?

Select * from {考室考号} where 类别 Like "%物%" order by 准考证号

--  作者:abcdzabcdz
--  发布时间:2020/10/12 20:41:00
--  
  1. 两表都有准考证号,班级表中考室列每个值要唯一,准考证号是一个条件,而考室中同一准考证对应“物A”"物B"“化A”"化B"“”地A“地B”,故再次限制类别必须包含“”物,这样考室考号和班级表之间建立起一对一关系,从而确保考室列每个单元格的值的唯一。注:班级表中的准考证号是唯一的,而考室考号中的准考证是多个。

--  作者:abcdzabcdz
--  发布时间:2020/10/12 20:51:00
--  
在班级安排表中,若用一个准考证号到考室考号表中去查,则一个准考号对应5条记录,现又限制这记录类别包含“物”,这样一个准考号在考室考号中只能查到一条记录。
--  作者:有点蓝
--  发布时间:2020/10/12 21:37:00
--  
好像说的很有道理,但是我还是您不知道到底要做什么。

2楼的sql有没有效果?如果没有,具体有什么问题?

--  作者:abcdzabcdz
--  发布时间:2020/10/13 8:58:00
--  
谢谢有点蓝版主!您看这个易表公式就明白了:FindText("生成考室考号","考室","准考证号","=",[准考证号],"类别","Instr","物")。这是《班级安排表》考室列从《生成考室考号》中取数的一个刷新公式。
--  作者:abcdzabcdz
--  发布时间:2020/10/13 8:59:00
--  

FindText

在指定的表、指定的列中查找指定内容,并返回符合条件的行中指定列的内容。

语法:
FindText(Grid,Col,CompareCol,CompareMode,CompareValue,......,Position)

Grid 在表中进行查找,可以用表名表示,也可以用位置表示。
Col 返回该列的内容,可以用列名称表示,也可以用位置表示。
CompareCol 进行比较的列,可以用列名称表示,也可以用位置表示。
CompareMode 比较方式,包括=、>、<、>=、<=、<>、Like、Instr共8种比较方式。
CompareValue 比较值
Position 这个参数决定返回第几个符合条件的行的数据,如果省略,则返回第一个符合条件的行,如果设为-1,则返回最后一个符合条件的行。

可以设置多个比较条件,从第三个参数开始,每三个参数组成一个比较条件。如果比较方式选择的是Instr,则进行包含查询;如果比较方式选择"Like",则可以在比较值中使用通配符进行类似查询。

FindText的返回值类型根据列类型确定,如果找到符合条件的行,那么返回值与该列类型相同。例如对于数值列,返回的是0、2,字符列返回的是"0"、"2",如果没有找到符合条件的行,将返回0(数值列、逻辑列、时段列)或者""(字符列或其它类型的列)。

例子:
FindText("订单","数量","客户","=","CS01")
返回订单表中CS01客户的第一个订单的订购数量。

FindText("订单","日期","客户","=","CS01",-1)
返回订单表中客户CS01最后一次下订单的日期。

FindText("订单","数量","客户","=","CS01","产品","=","PD01")
返回订单表中CS01客户第一次订购产品PD01的数量 。

FindText("订单","数量","客户","=","CS01","产品","=","PD01",2)
返回订单表中CS01客户第二次订购产品PD01的数量 。

利用FindText函数,我们可以在不建立表间关联的情况下引用其他表中有关联的数据。例如订单表和产品表都包括品名、规格、单价等数据,而产品表已经录入所有的品名、规格和单价,我们希望在订单表中只需输入品名和规格,单价即可自动输入。为实现上述目的,我们只需将订单表中单价列的刷新公式设为:FindText("产品表","单价","品名","=",[品名],"规格","=",[规格])


--  作者:有点蓝
--  发布时间:2020/10/13 9:16:00
--  
易表我完全没有用过,不懂。

就1楼实例,举例说明一下需要什么结果?

这个?
Select a.*,b.考室 As B考室 from {考室考号} As a Inner join {班级安排表} As b on a.准考证号=b.准考证号 where 类别 Like "%物%" order by a.准考证号

--  作者:abcdzabcdz
--  发布时间:2020/10/13 9:38:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:就以宾垚为例.rar



--  作者:abcdzabcdz
--  发布时间:2020/10/13 9:43:00
--  
再次谢谢蓝版主,有您的示例,我再学习一下SQL语句,应该能够解决了。