SQL: Как выбрать все строки, где строки 1 и 2 равны одному из 5 имен из оператора - PullRequest
2 голосов
/ 14 мая 2019

У меня есть таблица с около 100 лекарственными взаимодействиями.Я пытаюсь сделать утверждение, в котором я вставляю X названий лекарств, и он возвращает все строки, в которых названия лекарств присутствуют в первых двух столбцах.

Если у пациента есть дикумарол, варфарин и резерпин, онверните строки 4 и 6 на рисунке «Пример таблицы» ниже.

Пример таблицы: https://i.imgur.com/o6Nv39I.jpg

Я использую phpMyAdmin, который использует MySQL.Я пробовал набор стандартных SELECT запросов с WHERE, который говорит, что MedikamentA и MedikamentB соответствует названию двух лекарств, таких как:

SELECT * FROM MIdatabase 
WHERE MedikamentA = 'dicoumarol' 
  AND MedikamentB = 'ergotamine' " OR " MedikmentA = 'ergotamine' 
   OR MedikamentB = 'dicoumarol'

Не совсем правильно, но я написал это в верхней части головы.Вероятно, нужно поменять OR и получить некоторый парантез.

Я близок к тому, чтобы оторвать немного волос с макушки головы, пытаясь это сделать: p

Ответы [ 3 ]

2 голосов
/ 14 мая 2019

Попробуйте что-то вроде этого:

SELECT * FROM MIdatabase 
WHERE 'dicoumarol' IN ( MedikamentA, MedikamentB )
  AND 'ergotamine' IN ( MedikamentA, MedikamentB )
1 голос
/ 14 мая 2019

Я думаю, что ваш запрос не дает того, что вы ожидаете, потому что отсутствует скобка.

Самый простой способ достичь желаемого - использовать IN()

SELECT
  *
FROM
  MIdatabase
WHERE
  MedikamentA IN ('dicoumarol', 'warfarin', 'reserpine')
  AND MedikamentB IN ('dicoumarol', 'warfarin', 'reserpine');

Приведенный выше запрос такой же, как и приведенный ниже:

SELECT
  *
FROM
  MIdatabase
WHERE
  (
    MedikamentA = 'dicoumarol'
    OR MedikamentA = 'warfarin'
    OR MedikamentA = 'reserpine'
  )
  AND (
    MedikamentB = 'dicoumarol'
    OR MedikamentB = 'warfarin'
    OR MedikamentB = 'reserpine'
  );
0 голосов
/ 14 мая 2019

Вам потребуется несколько операторов LIKE вместе с оператором OR, чтобы удовлетворить условные требования вызова нескольких препаратов для каждого столбца. Вторая часть операторов LIKE нуждается в AND, так как вы будете ссылаться на отдельный столбец как часть условного оператора.

select * from table where MedikamentA like 'dicoumarol' or MedikamentA like 'warfarin' or MedikamentA like 'reserpine' and MedikamentB like 'dicoumarol' or MedikamentB like 'warfarin' or MedikamentB like 'reserpine';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...