0

我正在使用主从连接来显示详细表的分配列的列表。此外,我想显示第二个未分配详细信息列的网格

示例 Master-Table t_human: idHU, nameHU (like John, Oscar, ...)
Detail-Table t_property: idPO, namePO (like male, female, 金发, beard, blue eyes...)
Join-Table t_hu_po: idHU , idPO
-> John - 男,金发
-> Oscar - 男,蓝眼睛,胡须

当我选择一个主表行时,我想显示分配的属性以及未分配的属性。分配属性的主详细信息工作正常。但是对于未分配的属性不起作用。

细节-SQL: select p.idPO, p.namePO from t_property p where not exists (select * from t_hu_po hp where hp.idHU = :idHU and hp.idPO = p.idPO)

主 SQL: select idHU, nameHU from human

当我尝试选择 delphi 组件(Devart、SDAC、TMSQuery)中的详细信息字段时,它只显示 p.idPO 和 p.namePO 的字段。语句中的 :idHU 参数配置为组件中查询的参数。当我idHU在数据集(TMSQuery)的 DetailFields 属性中手动键入时,我在激活查询时从 delphi获得了一个无效的列名“idHU” 。

有人知道比使用数据更改事件和手动设置详细参数并刷新详细查询更好的解决方案吗?我的想法是,主细节会做同样的事情,但只是在后台,所以我没有做代码。

谢谢
斯蒂芬

4

1 回答 1

0

而不是使用where not existstry where p.idPO not in (Select idPO from t_hu_po where idHU=:idHu)

通过使子查询简单地返回所选 idHu 存在的所有 idPO,您的查询现在查找不在该列表中的属性。

于 2018-09-02T00:53:46.297 回答