Технологический комплекс МБ

Варианты

Технологический комплекс МБ

Все технологические комплексы:

SELECT serv_id FROM n_Serv WHERE service_type = 3 AND type = 2

 

Основные услуги тех. комплекса. Например по тех. комплексу NM_ Entero.grup_KAL_AB:

SELECT service_id FROM n_mb_service_complex_pivot WHERE complex_id='NM_ Entero.grup_KAL_AB' AND main_service IS NULL-- получили NM_ Entero.grup

 

Доп. услуги тех.комплекса. Например по тех. комплексу NM_ Entero.grup_KAL_AB:

SELECT service_id FROM n_mb_service_complex_pivot WHERE complex_id='NM_ Entero.grup_KAL_AB' AND main_service IS NOT NULL-- получили ABP_chuv

 

Доп. услуги тех.комплекса еще можно найти по основной услуге тех. комплекса. Например по основной услуге NM_ Entero.grup:

SELECT service_id FROM n_mb_service_complex_pivot WHERE main_service = 'NM_ Entero.grup'

 

Доп. услуги тех. комплекса бывают двух видов:

  1. доп. услуги, которые входят в состав основных услуг тех. комплекса
  2. доп. услуги, которые не входят в состав основных услуг тех. комплекса (например пользователь может добавить доп. услуги галочками в UI, по коду их могут называть доп. услуги тех комплекса со свободным выбором)

Основные услуги тех. комплекса (заказанные клиентом). Например по тех. комплексу NM_ Entero.grup_KAL_AB:

SELECT service_id FROM n_order_mb_service_param WHERE order_service_id LIKE '%/NM_ Entero.grup_KAL_AB'

 

Доп. услуги основной услуги тех.комплекса (заказанные клиентом). Например по основной услуге NM_ Entero.grup:

SELECT 
    service_id,-- доп услуга
    main_service, -- основная услуга доп. услуги
    complex_id, -- тех. комплекс основной услуги
    CONCAT(order_service_id, main_service, sample_id) AS uid -- уникальный идентификатор строки
FROM n_order_tech_complex_service
WHERE main_service = 'NM_ Entero.grup'

 

Тяжелый тех. долг

Так вышло, что добавление доп. услуг, которые не входят в состав основных услуг тех. комплекса, реализовали так, что они добавляются сначала в таблицу n_order_mb_service_param, а затем уже в таблицу n_order_tech_complex_service. Поэтому, на текущий момент мы имеем дублирование данных в этих таблицах.

Давайте рассмотрим пример, который демонстрирует аналогичность полей таблицы n_order_tech_complex_service и полей из таблицы n_order_mb_service_param (это и есть доп. услуги основных услуг тех. комплекса, которые не входят в тех. комплекс, но могут быть добавлены по желанию пользователя).

Доп. услуги основной услуги тех.комплекса (заказанные клиентом). Например по основной услуге NM_MF_4&MF:

SELECT
       sp.order_service_id,
       SUBSTRING(
            sp.order_service_id,
            CHARINDEX('/', sp.order_service_id) + 1,
            LEN(sp.order_service_id)
        ) AS complex_id,
       sp.service_id AS main_service,
       sp.sample_id,
       sp2.service_id,
       sp.biomaterial_id,
       sp.localization_id,
       sp.transport_id
FROM n_order_mb_service_param sp
INNER JOIN n_order_mb_service_param sp2 ON
    sp2.parent_id = concat(sp.order_service_id, '/', sp.service_id, '/', sp.biomaterial_id, '/', sp.localization_id) COLLATE Cyrillic_General_CS_AS
WHERE sp.service_id = 'NM_MF_4&MF'

20.12.2010 12:17

Комментарии

Комментариев пока нет.


Copyrights © 2007 - 2026 YaPro.Ru