Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Объединение результатов двух запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
Добрый день!

Помогите с решением такой проблемы:

есть 2 почти одинаковых запроса:

SELECT
    ct.CALT_NAME AS TYPE_OF_CALL,
    cll.START_TIME AS START_TIME,
    cll.PHONE AS ABONENT,
    cll.DIALED AS DIALED,
    clld.CELL_A AS CELL_PHONE
FROM
    BASE_STATIONS bs,
    CALL_TYPE ct,
    CALL_D_09_2011 clld,
    CALL_09_2011 cll
WHERE
    cll.CALL_ID = clld.CALL_ID
    AND ct.CALT_ID = cll.CALT_ID
    AND [b]cll.PHONE[/b] LIKE '123456'
    AND clld.CELL_A = bs.CELL_ID
ORDER BY cll.START_TIME

и

SELECT
    ct.CALT_NAME AS TYPE_OF_CALL,
    cll.START_TIME AS START_TIME,
    cll.PHONE AS ABONENT,
    cll.DIALED AS DIALED,
    clld.CELL_A AS CELL_PHONE
FROM
    BASE_STATIONS bs,
    CALL_TYPE ct,
    CALL_D_09_2011 clld,
    CALL_09_2011 cll
WHERE
    cll.CALL_ID = clld.CALL_ID
    AND ct.CALT_ID = cll.CALT_ID
    AND [b]cll.DIALED[/b] LIKE '123456'
    AND clld.CELL_A = bs.CELL_ID
ORDER BY cll.START_TIME

В обоих случаях хххххх - один и тот же номер. Как объединить результаты этих запросов рядом друг с другом (чтобы столбцы шли подряд)?
Фактически интересует CELL_A для PHONE и одновременно CELL_A, кому он звонил или кто ему звонил (DIALED).
Можно было бы связать по LEFT JOIN, но проблема в том, что если в первом запросе, скажем, 20 записей, то во втором их может быть меньше, так как не для всех звонивших на номер 123456 есть CELL_A.

Наверное немного запутал... :)

Вообщем должно быть что-то вроде:

TYPE_OF_CALL START_TIME PHONE DIALED CELL_A TYPE_OF_CALL START_TIME PHONE DIALED CELL_A
Исходящий междунар. 13.09.2011 8:29:24 11111111111111 22222222222222 15266
Исходящий междунар. 13.09.2011 10:59:40 11111111111111 33333333333333 15133
Исходящий на своего 13.09.2011 16:30:48 11111111111111 11111111000000 15805 Входящий от своего 13.09.2011 16:30:50 11111111000000 11111111111111 15816
Исходящий на своего 14.09.2011 13:12:54 11111111111111 44444444000000 15805 Входящий от своего 14.09.2011 13:12:55 44444444000000 11111111111111 15805
Исходящий междунар. 14.09.2011 19:14:18 11111111111111 55555555555555 15805
16 сен 11, 16:50    [11289556]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
Тут ещё разница есть для 2-х одинаковых звонков по времени - на 1-2 сек., но это мелочи... можно решить. А вот как поставить рядом эти звонки, если для каких-то записей первого запроса нет соответствующей записи во втором запросе?..
16 сен 11, 16:56    [11289635]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
alectr
Member

Откуда: Solar system
Сообщений: 137
Alexander Warlord,

Ну так соединяйте по
t1.phone=t2.dialed
16 сен 11, 19:39    [11290620]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
В этом случае выводятся не все строки. Мне нужны в том числе те, которые есть только в левой части таблицы, и те, которые имеют соответствующую запись в правой.
А если в правой нет dialed, к чему же я буду джойнить?..
16 сен 11, 19:53    [11290658]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
alectr
Member

Откуда: Solar system
Сообщений: 137
Alexander Warlord
имеют соответствующую запись...


И как вы определяйте соответствующую запись?
Если вы как то глазами определяйте соответствующую запись первой таблицы ко второй,
то наверное есть к чему джоинить.

Приведите нормальный пример, тогда Вам быстро помогут!
16 сен 11, 20:14    [11290711]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54377
аутер джойн уже предлагали?
16 сен 11, 21:23    [11290941]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
alectr
Member

Откуда: Solar system
Сообщений: 137
andreymx
аутер джойн уже предлагали?


Да, скорее всего это ему и нужно.
16 сен 11, 21:44    [11291009]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
alectr
И как вы определяйте соответствующую запись?
Если вы как то глазами определяйте соответствующую запись первой таблицы ко второй,
то наверное есть к чему джоинить.

Приведите нормальный пример, тогда Вам быстро помогут!

Я не совсем точно объяснил суть... если нет соответствующей записи - то должны быть пустые ячейки, как в указанном примере.
Например, для самой первой записи - в правой части пустота.
Если же я использую LEFT JOIN, то такие вот записи естественно не отображаются вовсе.
16 сен 11, 22:47    [11291266]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Alexander Warlord
есть 2 почти одинаковых запроса:
STFF как следует задавать вопросы по sql
16 сен 11, 23:42    [11291498]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Alexander Warlord
alectr
И как вы определяйте соответствующую запись?
Если вы как то глазами определяйте соответствующую запись первой таблицы ко второй,
то наверное есть к чему джоинить.

Приведите нормальный пример, тогда Вам быстро помогут!

Я не совсем точно объяснил суть... если нет соответствующей записи - то должны быть пустые ячейки, как в указанном примере.
Например, для самой первой записи - в правой части пустота.
Если же я использую LEFT JOIN, то такие вот записи естественно не отображаются вовсе.

не естественно.. (но так бывает, когда путают кто кому left)
17 сен 11, 06:23    [11291820]     Ответить | Цитировать Сообщить модератору
 Re: Объединение результатов двух запросов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
orawish
Alexander Warlord
пропущено...

Я не совсем точно объяснил суть... если нет соответствующей записи - то должны быть пустые ячейки, как в указанном примере.
Например, для самой первой записи - в правой части пустота.
Если же я использую LEFT JOIN, то такие вот записи естественно не отображаются вовсе.

не естественно.. (но так бывает, когда путают кто кому left)

left OUTER, конечно
17 сен 11, 06:27    [11291821]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить