SQL выпадающий, чтобы включить скрытые параметры
Приведенный ниже код в настоящее время заполняет раскрывающийся список, как
Все виды спорта
Спорт - Бейсбол
Спорт - Боулинг
Спорт - Баскетбол
что на самом деле
Logtypid=3935 - subtypeid=x
Мне нужно, чтобы идентификатор подтипа извлекал 2 дополнительных подтипа, которые не содержат logtypeid 3935, но проблема в том, что у этих подтипов есть 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. Мы хотим отображать спортивные журналы только в выпадающем списке. Когда выбран Спорт - Бейсбол, и отчет запускается, выходные данные должны быть только для студентов, которые имеют logtype 3935 и подтип x(какой бы подтип не был бейсбольным), но выходные данные должны также извлекать тот же самый logtypeid студентов 626, в частности только подтип 29 и 43. Имеет ли это смысл?
1 ответ
Это сложно, не зная, как данные хранятся в таблицах, сами данные и вывод. Но вот еще один удар в темноте:
Подводя итог: вы хотите, чтобы каждый тип журнала с идентификатором "3935", и подтипы этого. Затем вы также хотите два подтипа из другого типа журнала с идентификатором "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')))
Я пытался изменить вашу БД в http://sqlfiddle.com/, но я не делаю это на 100% правильно. Пожалуйста, добавьте пример в sqlfiddle, если вам нужна дополнительная помощь с этим, чтобы я мог проверить его с данными.