Sabhani Vipul Ответов: 1

Как объединить несколько таблиц с условным регистром


У меня есть имя таблицы "order_booking". Он имеет одно имя поля - "тип" и значение типа типа "коммерческий,упаковочный,заказной".

У меня есть еще три таблицы "commercial_estimation","packaging_estimation" и "order_estimation".

Мой вопрос заключается в том, что я хочу присоединиться к order_booking столом с этим три таблицы, но условно означает, что если у меня есть тип "коммерческое", то присоединяйтесь к 'commercial_estimation стола,если я тип 'упаковка' тогда присоединяйтесь с 'packaging_estimation стол и если я Тип 'того,' то присоединяйтесь к 'order_estimation стола. Таким образом, я могу присоединиться только к любой одной таблице, основанной на "типе".

Что я уже пробовал:

SELECT a.type FROM  order_booking a 
    (Case when type a.type = 'commercial' Then 'Inner Join commercial_estimation  b on a.id = b.oid' 
          when type a.type = 'packaging' Then 'Inner Join packaging_estimation  b on a.id = b.oid' 
          else  type a.type = 'order' Then 'Inner Join order_estimation  b on a.id = b.oid' END) 

1 Ответов

Рейтинг:
1

0x01AA

Как насчет этого:

SELECT 
  a.type,
   
FROM  order_booking a
LEFT JOIN commercial_estimation b ON a.type = 'commercial' AND b.oid = a.id
LEFT JOIN packaging_estimation c ON a.type = 'packaging' AND c.oid = a.id
LEFT JOIN order_estimation d ON a.type = 'order' AND d.oid = a.id


Чтобы иметь доступ к деталям, вы также можете использовать COALESCE в случае, если тип данных действительно совпадает и вам нравится иметь одно поле для трех деталей.


Maciej Los

Ну, кажется, ваши знания Sql выросли!
;)

0x01AA

Спасибо Мацей