以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  帮忙检查一下SELECT语句...(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2351)

--  作者:菜鸟foxtable
--  发布时间:2009/4/8 11:33:00
--  帮忙检查一下SELECT语句...(已解决)
select 床位,姓名,表A.ID,项目,剂量,用法,用量,单位,单价 from 表A inner join 表B on 表A.ID = 表B.ID where 停止日期 is null and ID in (2009111,2009114,2009121) order by 床位

执行上述代码提示""

删除紫色代码执行正常...


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

原数据是外部表,这里我做了个简单示例为内部表,请老师指点...

select 床位,姓名,{表A}.ID,项目,规格,单价 from {表A} inner join {表B} on {表A}.ID = {表B}.ID where 日期 is null and ID in (001,005,008) order by 床位

从ID为001,005,008中提取日期为空的项目数据,并以床位为排序依据...

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试文件.table
[此贴子已经被作者于2009-4-8 14:29:08编辑过]

--  作者:cpayinyuan
--  发布时间:2009/4/8 12:54:00
--  

建议你把表A和表B的表结构贴出来,这样才方便大家帮你分析错误.如果既无文件,又无表结构,只有一个查询语句判断它错在哪儿是比较困难的.

[此贴子已经被作者于2009-4-8 12:54:18编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/4/8 13:39:00
--  
select 床位,姓名,{表A}.ID,项目,规格,单价 from {表A} inner join {表B} on {表A}.ID = {表B}.ID where 日期 is null and ID in (001,005,008) order by 床位

从ID为001,005,008中提取日期为空的项目数据,并以床位为排序依据...

原数据是外部表,这里我做了个简单示例为内部表,请老师指点...

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试文件.table

[此贴子已经被作者于2009-4-8 13:40:38编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/8 13:46:00
--  
select 床位,姓名,{表A}.ID,项目,规格,单价 from {表A} inner join {表B} on {表A}.ID = {表B}.ID where 日期 is null and {表A}.ID in (\'001\',\'005\',\'008\') order by 床位

--  作者:cpayinyuan
--  发布时间:2009/4/8 13:55:00
--  
以下是引用菜鸟foxtable在2009-4-8 11:33:00的发言:
select 床位,姓名,表A.ID,项目,剂量,用法,用量,单位,单价 from 表A inner join 表B on 表A.ID = 表B.ID where 停止日期 is null and ID in (2009111,2009114,2009121) order by 床位

执行上述代码提示""

删除紫色代码执行正常...


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

原数据是外部表,这里我做了个简单示例为内部表,请老师指点...

select 床位,姓名,{表A}.ID,项目,规格,单价 from {表A} inner join {表B} on {表A}.ID = {表B}.ID where 日期 is null and ID in (001,005,008) order by 床位

从ID为001,005,008中提取日期为空的项目数据,并以床位为排序依据...

 下载信息  [文件大小:312.0 KB  下载次数:2]
图片点击可在新窗口打开查看点击浏览该文件:测试文件.table
[此贴子已经被作者于2009-4-8 13:41:17编辑过]

你的查询语句有紫色的部分为:ID in (2009111,2009114,2009121),但我看你的事例中Id列是字符型,如果是字符型,应改为 ID in (\'2009111\',\'2009114\',\'2009121\'),不知是否是这儿的错误。


--  作者:菜鸟foxtable
--  发布时间:2009/4/8 13:58:00
--  
图片点击可在新窗口打开查看怪事了....

原来项目文件里的ID in (....  ... ) 括号内是通过复合列表框生成的字符串,生成如(001,002,003)的字符串,如果没跨表查询就没有提示错误.....一加上跨表查询就出错...为什么?

原项目用的是外部SQL数据表

难道不跨表查询用(001,002,003)
跨表就用(\'001\',\'002\',\'003\')???
[此贴子已经被作者于2009-4-8 14:01:00编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/8 14:00:00
--  
看4楼
--  作者:菜鸟foxtable
--  发布时间:2009/4/8 14:02:00
--  
为何不跨表查询又正常呢?同样的代码生成ID 字符串...

原查询代码为
select ID,项目,规格,单价 from {表A} where 日期 is null and ID in (001,005,008)

我回单位再测试一下....图片点击可在新窗口打开查看
[此贴子已经被作者于2009-4-8 14:04:09编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/8 14:05:00
--  
1、两个表都有ID列,自然要明确是哪一个表的,单表没有这个问题。
2、字符值应该用单引号括起来

所以:

{表A}.ID in (\'001\',\'005\',\'008\')
--  作者:cpayinyuan
--  发布时间:2009/4/8 14:07:00
--  
以下是引用狐狸爸爸在2009-4-8 13:46:00的发言:
select 床位,姓名,{表A}.ID,项目,规格,单价 from {表A} inner join {表B} on {表A}.ID = {表B}.ID where 日期 is null and {表A}.ID in (\'001\',\'005\',\'008\') order by 床位

不仅仅是引号的问题,最关键的区别是在 Where 日期 is Null and {表A}.Id in (\'001\',\'005\',\'008\') ……    ,ID前面加了一个{表A},原因贺老师已经在前面讲清楚了。

[此贴子已经被作者于2009-4-8 14:10:16编辑过]