2015-03-12 3 views
0

код перечисленных ниже в настоящее время населяет выпадающего списка, как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. Имеет ли это смысл?

ответ

0

Это сложно, не зная, как хранятся данные в таблицах, самих данных и вывода. Но здесь идет еще один удар в темноте:

Подводя итог: Вы хотите, чтобы каждый тип журнала с идентификатором «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'))) 

Я пытался переразработки вашу БД в sqlfiddle, но я не делаю это на 100% правильно. Добавьте пример в sqlfiddle, если вам нужна дополнительная помощь, поэтому я могу проверить его с помощью данных.

+0

К сожалению, мне нужен только перечисленный список 3935 logtypeid, который будет иметь подтипы 100-130 .., но когда выбран определенный подтип из раскрывающегося списка, мне также нужны те студенты logtypeid 626, подтипы id 29 и 43. Если это имеет смысл. – 4dmk

+0

Я чувствую, что это должно быть CASE WHEN или CASE IF подтип IN (100-130), тогда также нужен logtypeid = 626, подтип IN (29,43) для этих студентов. – 4dmk

+0

, чтобы дать наглядное объяснение: Спорт - Бейсбол (студенты, у которых есть logtypeid = 3935, и подтип = 101) + плюс вытащите те же самые ученики logtypeid 626, подтип IN ('29', '43') – 4dmk

Смежные вопросы