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, если вам нужна дополнительная помощь с этим, чтобы я мог проверить его с данными.

Другие вопросы по тегам