我在药店工作。对药物进行分类的一种方法是称为GPI的标识符。 GPI中的数字具有含义和父子关系。
在我的数据库中,我有一个组表,一个类表(包括组)和一个子类表(包括组和类)。类的数值在组上重复。例如,组01可能具有类01,02,03和04.组02也可能具有01,02,03和04.每个组中的类不同,它们使用具有相同的标识符。
在JasperReports Server 4.7中,我有一个显示GPI组的多选查询输入控件。我还有一个多选查询级联输入控件,它接受gpi_group值来显示类列表。这是填充级联输入控件的查询:
SELECT DRUG_GROUP, DRUG_CLASS, CLASS_NAME
FROM Schema.DRUG_CLASSES
WHERE $X{IN, DRUG_GROUP, gpi_group}
ORDER BY DRUG_GROUP, DRUG_CLASS
可见列:DRUG_GROUP,DRUG_CLASS,CLASS_NAME
值列:DRUG_CLASS
当我选择一个药物组时它很有效。这是01组:
这是02组:
但是当我一起选择它们时:
输入控件似乎不喜欢选择多个GPI组时发生的GPI类的重复值。如果我将值列更改为GPI类名称(没有重复项),则显示符是所需的:
但是,我不希望我的值列为GPI类名,我希望它是GPI类。我想限制我的GPI子类输入控件来自GPI组和GPI类输入控件的值,我想将GPI组,GPI类和GPI子类提供给我的查询。
有关如何让级联输入控件显示“重复”GPI类值的任何想法?
答案 0 :(得分:0)
这是我决定做的事情 -
输入控件需要值列中的唯一值。我认为没有任何方法可以解决这个问题,所以我只想推出它。我将在查询中处理连接的字符串。
查询GPI类级联输入控件:
SELECT
DRUG_GROUP,
DRUG_CLASS,
CLASS_NAME,
DRUG_GROUP||DRUG_CLASS AS GROUP_CLASS
FROM Schema.DRUG_CLASSES
WHERE $X{IN, DRUG_GROUP, gpi_group}
值列:GROUP_CLASS(GPI组和GPI类的连接)
查询GPI子类级联输入控件:
SELECT
DRUG_GROUP,
DRUG_CLASS,
GROUP_CLASS,
DRUG_SUBCLASS,
GROUP_CLASS_SUBCLASS,
DRUG_SUBCLASSNAME
FROM (
SELECT
DRUG_GROUP,
DRUG_CLASS,
DRUG_GROUP||DRUG_CLASS AS GROUP_CLASS,
DRUG_SUBCLASS,
DRUG_GROUP||DRUG_CLASS||DRUG_SUBCLASS AS GROUP_CLASS_SUBCLASS,
DRUG_SUBCLASSNAME
FROM Schema.DRUG_SUBCLASSES
)
WHERE $X{IN, GROUP_CLASS, gpi_class_cas}
值列:GROUP_CLASS_SUBCLASS(GPI组,GPI类和GPI子类的串联)