Tro*_*roz 3 sql sql-server delphi ado
我有两张桌子; 它们通过Delphi ado链接通过列名称上的关系详细信息加入
第一个表有一堆数据,一个fileref作为键1,第二个表有数据行,fileref有键2
第一个表有其他信息,但有一个fileref值,第二个表包含许多fileref值但不同的帐户
表1:id,fileref,1,2,3,4,5,accno,7,8,9等等......
表2:id,fileref,accno
SELECT * FROM vtindex a
JOIN vi_accno b
ON b.fileref = a.FileRef
WHERE (a.AccNo like '%123456789%') or (b.accno like '%123456789%')
Run Code Online (Sandbox Code Playgroud)
上面是我得到模糊错误的查询
我的想法是,如果我没有找到accno是表1,它必须尝试在表2中找到它
希望这是有道理的,如果我在MSSMS中运行查询,查询返回结果没有错误
你将不得不声明你的列,就像这样;
SELECT
a.ID A_ID
,a.fileref A_fileref
,a.Field1 A_Field1
,a.Field2 A_Field2
,a.accno A_Accno
,b.id B_ID
,b.fileref B_fileref
,b.accno B_accno
FROM vtindex a
JOIN vi_accno b
ON a.fileref = b.fileref
WHERE a.AccNo like '%123456789%'
OR b.accno like '%123456789%'
Run Code Online (Sandbox Code Playgroud)
如果你只想宣布一些,那么这样做;
SELECT
a.*
,b.id B_ID
,b.fileref B_fileref
,b.accno B_accno
FROM vtindex a
JOIN vi_accno b
ON a.fileref = b.fileref
WHERE a.AccNo like '%123456789%'
OR b.accno like '%123456789%'
Run Code Online (Sandbox Code Playgroud)
你的问题是,你要使用如领域id,fileref并且accno不止一次(每个表)和名称冲突.如果您更改表格上只有3条记录的名称,那么您可以将表格保留为原样.