SQL下拉以包含隐藏参数

时间:2015-03-12 14:35:51

标签: sql drop-down-menu dropdownlistfor tlist powerschool

下面列出的代码目前填充下拉列表,如

所有体育

体育 - 棒球

体育 - 保龄球

体育 - 篮球

真的是

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这有意义吗?

1 个答案:

答案 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中添加一个示例,以便我可以使用数据进行测试。