Delphi:过滤左外连接查询的结果

时间:2014-02-01 09:27:19

标签: sql delphi

我有一个查询left outer join子句收集来自两个表的结果(我使用TZQuery组件,但这可能无关紧要)。

我想使用过滤器仅显示名为ABC的列包含XXX的结果。

我的第一个方法是:

MyQuery.Filter := 'ABC = XXX';
MyQuery.Filtered := True;

虽然不起作用。

我认为原因是我的查询从两个表中收集结果。

这里有什么合适的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:1)

请记住,通过传递回引擎来应用过滤器,因此您必须像编写SQL中WHERE子句的条件一样编写过滤器。

MyQuery.Filter := 'ABC = 1';
MyQuery.Filter := 'ABC <> 1';
MyQuery.Filter := 'ABC = ' + QuotedStr('XXX');
MyQuery.Filter := 'ABC LIKE ' + QuotedStr('%XXX%');

如果引擎无法理解这些条件,则您的过滤器将不适用。

另外,请尝试并记住要明确,如果您正在使用联接,并且字段名称之间可能存在歧义,包括过滤器中的TABLENAME。

MyQuery.Filter := 'TABLENAME.ABC = 1';