В моей компании мы производим программное обеспечение для клиник, и мне было поручено подготовить выборку, чтобы заполнить ужасную и денормализованную таблицу лекарств одного из наших клиентов данными из красивых нормализованных таблиц от поставщика, на который наш клиент подпишется в ближайшее время.
Проблема в том, что у нас есть одна таблица, а провайдер имеет разброс данных между 3 таблицами. Наш VADEMECUM (который будет обрезан и заполнен select-insert); их - это dro (наркотики), drp (таблица лекарств и лекарств) и pro (медицина).
Столбцы из VADEMECUM, которые принимают участие в этой проблеме: CODIGO (идентификатор лекарства) и [DROGA PRINCIPAL] (основной препарат лекарства).
В нашей таблице VADEMECUM есть данные, показанные следующим образом:
CODIGO: 1234 (lets say headache pills)
[DROGA PRINCIPAL]: 176 (lets say Ibuprofen)
Реляционные таблицы, которые я буду использовать для заполнения VADEMECUM, имеют такие данные:
Стол про
CODIGO: 1234
Стол дрп
CODIGO PRODUCTO: 1234 || CODIGO DROGA: 176 || IMPORTANCE: 1
CODIGO PRODUCTO: 1234 || CODIGO DROGA: 276 || IMPORTANCE: 2
CODIGO PRODUCTO: 1234 || CODIGO DROGA: 144 || IMPORTANCE: 3
Стол дро
CODIGO DROGA: 176
CODIGO DROGA: 276
CODIGO DROGA: 144
Я ПРОПИСАЛ НЕКОТОРЫЕ КОЛОННЫ, ПОТОМУ ЧТО ОНИ НЕ ПРИНЯЛИ УЧАСТИЯ В ПРОБЛЕМЕ, ТАК КАК НАЗВАНИЯ МЕДИЦИНЫ И ТАКОЕ.
Как вы можете видеть, мне нужен способ указать SQL соединить строку медицины 1234 со строкой drp
с тем же кодом, но только одним (тот, который имеет значение = 1), а затем объединить с наркотиками таблица, чтобы получить название препарата.
Хуже всего то, что некоторые продукты не входят в drp
, поэтому я должен добавить где-то ноль, чтобы не потерять продукты, а также есть некоторые продукты, которые не имеют значения = 1, но они имеют во всех их наркотическая значимость = 0 и важность = 9 (все не важны, и все одинаково важны), и в этих случаях мне нужно 0 из тех, у кого 0, и случайное лекарство для тех, у кого 9.
Я надеюсь, что со своей проблемой все было в порядке, я не мог найти ответ где-либо еще.
Заранее спасибо
Я уже пытался сделать выбор, но у меня пропало несколько строк.
SELECT
1 ID,
1 ID_Referencia,
[pro].[Clave] AS Código,
[pre].CodigoBarras AS [Código de Barras],
[pre].CodigoTroquel AS [Código Troquel],
NULL [Droga secundaria],
[pro].[Descripcion] AS Marca,
[ClaveLab] AS [Código del Laboratorio],
[ClaveLabCom] AS [Código de Proveedor],
[pre].Descripcion AS Presentacion
FROM
[dbo].[pro]
--1
LEFT JOIN
[dbo].[pre] ON [pro].[Clave] = [dbo].[pre].ClaveProducto
--2
--LEFT JOIN
-- [dbo].[drp] ON [pro].[Clave] = [dbo].[drp].ClaveProducto
--WHERE
-- [drp].Importancia = 1 OR [dbo].[drp].ClaveProducto IS NULL OR [drp].Importancia = 0 OR [drp].Importancia = 9
--3
--INNER JOIN
-- [dnp].[dro] ON [drp].ClaveDroga = [dro].Clave
ORDER BY
Código ASC