Здравствуйте, мне очень трудно в этой плохой структуре базы данных, и мне нужна помощь в фильтрации строк в объединении таблиц, возможно ли это?

Что происходит, так это то, что я пытаюсь выбрать pre1, pre2, pre3, pre4, pre5 в таблице, значение которой не равно нулю, поэтому отображаются все строки, но когда я пытаюсь отфильтровать строки, где trno = <value>, я получаю сообщение об ошибке, потому что я не знаю как это сделать. Вы можете помочь мне?

Код, над которым я работаю, таков

SELECT * FROM
(
SELECT pre1 AS col FROM ccsubject
UNION
SELECT pre2 AS col FROM ccsubject
UNION
SELECT pre3 AS col FROM ccsubject
UNION
SELECT pre4 As col FROM ccsubject
UNION
SELECT pre5 AS col FROM ccsubject
) T1
WHERE col IS NOT NULL

Я также попытался это

SELECT * FROM
(
SELECT pre1 AS col FROM ccsubject
UNION
SELECT pre2 AS col FROM ccsubject
UNION
SELECT pre3 AS col FROM ccsubject
UNION
SELECT pre4 As col FROM ccsubject
UNION
SELECT pre5 AS col FROM ccsubject
UNION 
SELECT trno AS tr FROM ccsubject
) T1
WHERE col IS NOT NULL AND tr = 29005

Вот моя структура таблицы

enter image description here

0
user3606724 6 Сен 2016 в 07:03

3 ответа

Лучший ответ

Попробуй это:

SELECT * FROM
(
SELECT pre1 AS col FROM ccsubject WHERE trno = 29005 AND pre1 IS NOT NULL
UNION
SELECT pre2 AS col FROM ccsubject WHERE trno = 29005 AND pre2 IS NOT NULL
UNION
SELECT pre3 AS col FROM ccsubject WHERE trno = 29005 AND pre3 IS NOT NULL
UNION
SELECT pre4 As col FROM ccsubject WHERE trno = 29005 AND pre4 IS NOT NULL
UNION
SELECT pre5 AS col FROM ccsubject WHERE trno = 29005 AND pre5 IS NOT NULL
) T1
0
Susang 6 Сен 2016 в 04:11
  • Я не уверен, почему вы используете select *, если вам просто нужны pre1, pre2, pre3, pre4, pre5.
  • Также почему вы хотите, чтобы все предварительные столбцы назывались col

SELECT pre1, pre2, pre3, pre4, pre5 FROM ccsubject where col is not NULL

0
Siddharth 6 Сен 2016 в 04:11

Вам также необходимо выбрать поле tr.

SELECT * FROM
(
    SELECT pre1 AS col, trno AS tr FROM ccsubject
    UNION
    SELECT pre2 AS col, trno AS tr FROM ccsubject
    UNION
    SELECT pre3 AS col, trno AS tr FROM ccsubject
    UNION
    SELECT pre4 As col, trno AS tr FROM ccsubject
    UNION
    SELECT pre5 AS col, trno AS tr FROM ccsubject
) t
WHERE t.col IS NOT NULL AND
      t.tr = 29005
0
Tim Biegeleisen 6 Сен 2016 в 04:13