Шаблон запроса был бы гораздо более простым, если бы таблица была разработана в соответствии с нормативными шаблонами отношений.
Рассмотрим набор результатов, возвращаемый запросом этой формы:
SELECT v.condition
, v.symptom
, v.associated_or_excluded
FROM ( SELECT t1.`Condition` AS `condition`
, 'Diarrhoea' AS `symptom`
, t1.`Diarrhoea` AS `associated_or_excluded`
FROM mytable t1
UNION ALL
SELECT t2.`Condition`
, 'Headache'
, t2.`Headache`
FROM mytable t2
UNION ALL
SELECT t3.`Condition`
, 'Hyporeflexia'
, t3.`Hyporeflexia`
FROM mytable t3
UNION ALL
SELECT t4.`Condition`
, 'Hypoaesthesia_Spinothalamic'
, t4.`Hypoaesthesia_Spinothalamic`
FROM mytable t4
) v
Мы могли бы использовать этот запрос в качестве встроенного представления (источника строк) для внешнего запроса, или для преобразования можно было бы заполнить новую таблицу результатом этого запроса INSERT ... SELECT
.
С этим набором результатов, с данными в стандартной реляционной форме, мы избегаем борьбы, написав простой запрос, подобный этому:
SELECT t.symptom
FROM ( ... ) t
WHERE t.condition = 'Hyporeflexia'
AND t.associated_or_excluded = 2
, который вернет симптомы, исключенные из определенного состояния.
(или, если выразиться в терминах исходного вопроса, где значение 2 находится на пересечении m и n )
Обратите внимание, что ( ... )
заменяется именем таблицы или встроенным представлением, возвращающим результат запроса выше.
Обратите внимание, что вся "борьба" находится внутри скобок, с запросом встроенного представления, который получает данные, представленные в подходящей форме.
SELECT t.symptom
FROM ( -- inline view query
SELECT t1.`Condition` AS `condition`
, 'Diarrhoea' AS `symptom`
, t1.`Diarrhoea` AS `associated_or_excluded`
FROM mytable t1
UNION ALL
SELECT t2.`Condition`
, 'Headache'
, t2.`Headache`
FROM mytable t2
UNION ALL
SELECT t3.`Condition`
, 'Hyporeflexia'
, t3.`Hyporeflexia`
FROM mytable t3
UNION ALL
SELECT t4.`Condition`
, 'Hypoaesthesia_Spinothalamic'
, t4.`Hypoaesthesia_Spinothalamic`
FROM mytable t4
) t
WHERE t.condition = 'Hyporeflexia'
AND t.associated_or_excluded = 2