【发布时间】:2016-06-22 12:33:48
【问题描述】:
我有两张桌子;它们通过 Delphi ado 链接通过列名上的关系详细信息加入
第一个表有一堆数据和一个 fileref 作为键 1, 第二个表有数据行和一个 fileref 作为键 2
第一个表有其他信息,但一个 fileref 值, 第二个表包含许多 fileref 值但不同的帐户
表 1: id、fileref、1、2、3、4、5、accno、7、8、9等...
表 2: id、fileref、acno
SELECT * FROM vtindex a
JOIN vi_accno b
ON b.fileref = a.FileRef
WHERE (a.AccNo like '%123456789%') or (b.accno like '%123456789%')
上面是我得到不明确错误的查询
这个想法是,如果我没有找到 accno 是表 1,它必须尝试在表 2 中找到它
希望这是有道理的,奇怪的是,如果我在 MSSMS 中运行查询,查询会返回没有错误的结果
【问题讨论】:
-
将其更改为 SELECT a.*, b.*
-
@RichBenner 不工作 m8
-
我刚刚发布了一个答案,看看它是否解决了它。
-
您绝对确定您的 AdoQuery 的 Sql.Text 属性包含您在 q 中引用的确切 SQL 语句吗?我问的原因是,通过使用 Sql.Add() 构造它很容易引入 MS SSMS 捕获的语法错误。
-
好的,它通过将表 2 的名称重命名为 viid、vifileref、viaccno 然后使用这里每个人的所有建议来解决这个问题,所以感谢大家迄今为止提供的所有出色答案和帮助@RichBenner @ MartynA @ JoeC @ VahidFarahmandian
标签: sql sql-server delphi ado