下面列出的代码目前填充下拉列表,如
所有体育
体育 - 棒球
体育 - 保龄球
体育 - 篮球
真的是
Logtypid = 3935 - subtypeid = x
我需要使用子类型ID来提取2个额外的子类型,这些子类型不包含3935的logtypeid,但问题是这些子类型的logtypeid为626.我只需要logtypeid为3935的学生虽然。目前..我写的方式:
SELECT DISTINCT log.logtypeid,
CASE WHEN log.subtype is null THEN ' ' ELSE log.subtype END subID,
CASE WHEN ','||'~[gpv:lt]'||',' LIKE '%,' || log.subtype || '.' || CASE WHEN log.subtype is null THEN ' ' ELSE log.subtype END || ',%' THEN 'selected' ELSE '' END isselected,
lt.Name logtype,
CASE WHEN to_char(st.ValueT) is null THEN ' - NONE' ELSE ' - ' || to_char(st.ValueT) END subtype
FROM log
INNER JOIN gen lt ON log.logtypeid = lt.id
LEFT OUTER JOIN gen st ON st.Name = to_char(lt.ID)
AND st.value = log.subtype
AND st.Cat = 'subtype'
WHERE lt.Cat = 'logtype'
AND logtypeid = '3935'
AND to_char(log.schoolid) like CASE WHEN ~(curschoolid) = 0 THEN '%' ELSE to_char(~(curschoolid)) END
ORDER BY subtype
;]
我已经尝试了一切,我开始认为可能为了获得所需的结果,我可能需要为它创建一个表。任何帮助或想法将不胜感激。感谢。
Data Example:
STUDENTID LOGTYPEID SUBTYPE
6382 626 27
6382 626 41
6382 626 38
6382 626 43
6382 626 29
6382 3935 109
6382 3935 117
6383 626 43
6383 626 30
6383 626 43
6383 626 25
6383 626 43
6383 626 14
6383 3935 117
6400 626 38
6401 626 28
6401 626 36
6401 3935 110
代码使用tlist填充选择选项,用于运行报告的下拉列表。选择选项名称来自GEN表,它应该解释连接。运动日志是3935,健康日志是626.我们只想在下拉列表中显示运动日志。当选择Sports - Baseball并运行报告时,输出应该只是具有logtype 3935和子类型x(无论哪个子类型是棒球)的学生,但是输出还需要拉同一个学生logtypeid 626,特别是只有子类型29这有意义吗?
答案 0 :(得分:0)
如果不知道数据如何存储在表,数据本身和输出中,这很难。但是,在黑暗中又发生了另一次刺痛:
总结一下:您希望每个logtype的id为“3935”,以及它的子类型。然后你还想要另一个logtype的两个子类型,id为“626”。
数据示例(实际上,您从两个表中获取数据):
logtypeid subtype name
3935 100 Baseball
3935 101 Bowling
626 29 Fishing
626 43 Golfing
到目前为止,它非常直接,但是有一个非常混乱的选择案例,我只是希望不需要改变。
怎么样:
WHERE lt.Cat = 'logtype'
AND (logtypeid = '3935' OR (logtypeid = '626' AND subtype IN ('29','43')))
由于我不确定“lt.Cat”的行为,可能需要这样做:
WHERE ((lt.Cat = 'logtype' AND logtypeid = '3935') OR (lt.Cat = 'subtype' AND logtypeid = '626' AND subtype IN ('29','43')))
我已尝试在sqlfiddle重新设计您的数据库,但我没有100%正确地完成它。如果您需要更多帮助,请在sqlfiddle中添加一个示例,以便我可以使用数据进行测试。