Я пишу большую хранимую процедуру, где мне нужно присоединиться к таблице, которая содержит соглашение. Однако, поскольку наша структурированная база данных была сделана более простым способом, я должен присоединиться к соглашению на различных условиях, чтобы получить правильную информацию по всем строкам. Поскольку не все соглашения существуют в rel и не все существуют в идентичности, не все строки объединяются.
Если я разделю утверждение ниже и присоединюсь к соглашению дважды, это сработает. однако тогда у меня есть два набора agr, что не является оптимальным. Представленное ниже утверждение кажется очень неэффективным. так как обычно весь код выполняется за 5 минут, но это никогда не будет сделано, не через 50 минут.
Так что есть лучший способ сделать это соединение, где я сначала присоединяюсь к agr1.agreement_id = rel.agreement_id, и если это возвращает null (нет соединения), тогда я использую agr1.bill_id = idt.identity для остальных.
left JOIN agreement agr1
on(agr1.agreement_id = rel.agreement_id)
or(agr1.bill_id = idt.identity)