以文本方式查看主题 - 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中提取日期为空的项目数据,并以床位为排序依据...
[此贴子已经被作者于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中提取日期为空的项目数据,并以床位为排序依据... 原数据是外部表,这里我做了个简单示例为内部表,请老师指点...
[此贴子已经被作者于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中提取日期为空的项目数据,并以床位为排序依据...
[此贴子已经被作者于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编辑过]
|