Как убрать повторяющиеся значения в запросе?

192
15 июня 2021, 13:30

Всем привет, есть код выборки таблиц

Select  tpam.tpam_09.manufacture, 
        tpam.tpam_09.standart, 
        tpam.tpam_09.pipe_od, 
        tpam.tpam_09.pipe_wall, 
        tpam.tpam_09.grade, 
        tpam.tpam_09.heat_n, 
        tpam.tpam_09.pipe_tenar, 
        tpam.tpam_09.mill_ord, 
        tpam.tpam_09.LENGTH, 
        tpam.tpam_09.po_n, 
        TPAM.TPAM_09.ITEM_CODE, 
        tpam.tpam_09.COATERS, 
        tpam.tpam_09.pipe_n as pipe_n1, 
        tpam.tpam_09.type, 
        tpam.tpam_09.od, 
        tpam.tpam_09.date1, 
        tpam.tpam_09.mpa, 
        tpam.tpam_09.user1, 
        tpam.tpam_09.pr1, 
        tpam.tpam_09.pr2, 
        tpam.tpam_09.CRN, 
        tpam.tpam_09.DD, 
        tpam.tpam_09.tenaris, 
        tpam.tpam_09.MTC, 
        R1.data_n1,
        R1.data_n1, 
        tpam.tpam_09.pipe_n, 
        R1.remark, 
        tpam.tpam_09_wp05.data_n1 as data_n1wp05, 
        tpam.tpam_09_wp05.data_n1 as data_n1wp05, 
        tpam.tpam_09_wp05.shift, 
        tpam.tpam_09_wp05.sec, 
        tpam.tpam_09.pipe_n, 
        tpam.tpam_09_wp05.pipe_size, 
        tpam.tpam_09_wp05.batch_red, 
        tpam.tpam_09_wp05.batch_gold, 
        tpam.tpam_09_wp05.inspekt, 
        tpam.tpam_09_wp05.tracking, 
        tpam.tpam_09_wp05.lot, 
        tpam.tpam_09_wp05.remark1,
        tpam.tpam_09_wp06.data_n1 as data_n1wp6, 
        tpam.tpam_09_wp06.data_n1 as data_n1wp6, 
        tpam.tpam_09_wp06.shift1, 
        tpam.tpam_09_wp06.sec2, 
        tpam.tpam_09.pipe_n,  
        tpam.tpam_09_wp06.result,  
        tpam.tpam_09_wp06.Q_ty ,
        R2.data_n1 as data_n11,
        R2.data_n1 as data_n11, 
        TPAM.tpam_09.pipe_n, 
        R2.remark as remark2222,
        tpam.tpam_09_wp10.data_n5,
        tpam.tpam_09_wp10.data_n5,
        tpam.tpam_09_wp10.shift5,
        tpam.tpam_09.pipe_n,
        tpam.tpam_09_wp10.LENGTH51,
        tpam.tpam_09_wp10.status51,
        tpam.tpam_09_wp10.remark51,
        tpam.tpam_09_wp10.status51,
        tpam.tpam_09_wp10.remark51,
        tpam.tpam_09_wp10.STRIP5,
        tpam.tpam_09_wp10.LENGTH52,
        tpam.tpam_09_wp10.test5,
        tpam.tpam_09.mtc,
        tpam.tpam_09.remark5,
        tpam.tpam_09_wp12.data6, 
        tpam.tpam_09.Pipe_n,
        tpam.tpam_status.description, 
        tpam.tpam_09_wp12.bt, 
        tpam.tpam_09_wp12.st6, 
        tpam.tpam_09.DATE7, 
        tpam.tpam_09.pipe_n as pipe_n6, 
        tpam.tpam_09.DJW, 
        tpam.tpam_09.DATE8, 
        tpam.tpam_09.WEEK, 
        tpam.tpam_09.pipe_n as pipe_n7, 
        tpam.tpam_09.WELD, 
        tpam.tpam_09.LENGTH8, 
        tpam.tpam_09.DATE11, 
        tpam.tpam_09.STATUS2, 
        tpam.tpam_09.RET_DATE, 
        tpam.tpam_09.pipe_n as pipe_n8,  
        tpam.tpam_09.RET_INSPST, 
        tpam.tpam_09.RET_RRDATE, 
        tpam.tpam_09.RET_FIND, 
        tpam.tpam_09.RET_CRN, 
        tpam.tpam_09.RET_SRN, 
        tpam.tpam_09.RET_DD, 
        tpam.tpam_09.DATE10, 
        tpam.tpam_09.pipe_n as pipe_n9, 
        tpam.tpam_09.Weld, 
        tpam.tpam_09.Length8, 
        tpam.tpam_09.NOM 
from tpam.tpam_09 
LEFT JOIN tpam.tpam_09_remark R1 ON (tpam.tpam_09.pipe_n = R1.pipe_n) AND (R1.wp = 03) 
left JOIN tpam.tpam_09_wp05 ON tpam.tpam_09.pipe_n = tpam.tpam_09_wp05.pipe_n 
left JOIN tpam.tpam_09_wp06 ON tpam.tpam_09.pipe_n = tpam.tpam_09_wp06.pipe_n  
LEFT JOIN tpam.tpam_09_remark R2 ON (tpam.tpam_09.pipe_n = R2.pipe_n) AND (R2.wp = 09)  
left JOIN tpam.tpam_09_wp10 ON tpam.tpam_09.pipe_n = tpam.tpam_09_wp10.pipe_n 
left JOIN tpam.tpam_09_wp12 ON tpam.tpam_09.pipe_n = tpam.tpam_09_wp12.pipe_n 
left join tpam.TPAM_STATUS On tpam_09.status = tpam.tpam_status.kod 
where tpam.tpam_09.create_date>=TO_DATE('04.08.2019', 'DD.MM.YYYY')
and tpam.tpam_09.create_date<TO_DATE('04.08.2019', 'DD.MM.YYYY')+1

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

Answer 1

Собственно все верно. Вы делаете произведение таблицы саму с собой. Есть два пути:

  1. Использовать ключевое слово DISTINCT
  2. Разные псевдонимы для одной таблицы

    from tpam.tpam_09 A, tpam.tpam_09 B

READ ALSO
Unity c# Не удается преобразовать &ldquo;char&rdquo; в &ldquo;char*&rdquo;

Unity c# Не удается преобразовать “char” в “char*”

Нужно взять первую букву имени объекта

81
Как делать полупрозрачный круг около персонажа, когда тот за объектом(стеной к примеру)

Как делать полупрозрачный круг около персонажа, когда тот за объектом(стеной к примеру)

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

75
Ошибка в алгоритме Карацубы для Длинной арифметики

Ошибка в алгоритме Карацубы для Длинной арифметики

Пытаюсь сделать библиотеку с длинными числамиИ возникла проблема, которую я пытался уже неделю исправить

101
Почему не работает Threading.Timer?

Почему не работает Threading.Timer?

Мне нужно вызывать функцию обновления БД по таймеру (раз в минуту)Делаю я это так:

92