используя несколько левых внешних объединений pl / sql - PullRequest
0 голосов
/ 15 ноября 2011

Итак, у меня есть три таблицы, из которых я пытаюсь получить данные с помощью следующего запроса:

select tats.machine_interval_id as machine_interval_id,
       tats.interval_type as interval_type, 
       tats.interval_category as interval_category,
       ops.opstatemnemonic as operational_state, 
       nptc.categorytype as idle_category,
       tats.interval_duration as interval_duration
from temp_agg_time_summary tats
left outer join operationalstates ops on ops.opstateid=tats.operationalstatenumeric
left outer join nptcategories nptc on nptc.categoryid=tats.categorytypenumeric

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда есть значение, отличное от нуля, из nptcategories table, он удваивает запись, которая, в свою очередь, отбрасывает любые вычисления, которые я буду делать позже в моих пакетах.Я считаю, что проблема связана с наличием более одного левого внешнего соединения в запросе.Мой вопрос может показаться довольно простым, но я новичок в PL / SQL, так что терпите меня.

Что я хочу знать, так это как я могу использовать несколько левых внешних объединений в запросе без возникновения этой проблемы?Что было бы лучшим способом структурировать этот запрос?

Обновление

Хорошо, поэтому я обнаружил некорректную строку кода, приведенную ниже:

left outer join nptcategories nptc on nptc.categoryid=tats.categorytypenumeric

Кроме того, при использовании различных он удаляет вседубликаты записей, но вызовет ли это использование проблем, о которых я не знаю?Должен ли я сосредоточиться больше на выяснении, почему вышеприведенное объединение не работает должным образом, или это отличное достаточно хорошо?

1 Ответ

0 голосов
/ 16 ноября 2011

Хорошо, так что после предложения Вольфа я вошел и запустил следующую строку кода

    select categorytype, count(*) 
from nptcategories 
group by categorytype 
having count(*) > 1;

После выполнения этого я обнаружил, что каким-то образом в этой таблице были дубликаты записей, поэтому это было исправлено, удалив дубликаты и установив в таблице уникальные идентификаторы. Это было сделано с помощью следующего сценария в БД:

alter table nptcategories add constraint nptcatidunq unique(categoryid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...