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

Откуда: Tambov
Сообщений: 47
SELECT ALL

users.f_name "FNAME",
adres.contacts_information

FROM
     adres, -- spisok adresov
     useradr, -- privyazka adresov k user card
     users -- dannye userOV
WHERE 
      users.pcard_id = useradr.pcard_pcard_id(+) AND adres.ci_id(+) = useradr.ci_ci_id
   -- AND adres.trci_trci_id = 2 -- adres*/

в столбце adres.trci_trci храниться свойство адреса может быть

1 - фактический
2 - прописка
3 - телефон

нужно вывести список userOV и их факрических адресов (если нет факт адреса то пусто)
userY должны быть все строки с другими видами адресов нужно исключить
если раскоментировать

   -- AND c_i.trci_trci_id = 2 -- adres*/
то исчезают и те у кого нет факт адреса
2 мар 07, 12:17    [3852975]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
(+)
2 мар 07, 12:18    [3852984]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
спасибо!
2 мар 07, 12:20    [3853003]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
теперь появляються дубликаты с пустым полем адреса
2 мар 07, 12:35    [3853121]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
LEFT JOIN + IN
2 мар 07, 13:27    [3853500]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
Сделал так

SELECT ALL

users.f_name "FNAME",
adres.contacts_information
FROM
   (users LEFT JOIN useradr
   ON users.pcard_id = useradr.pcard_pcard_id)
            LEFT JOIN adres
   ON useradr.ci_ci_id = adres.ci_id
     AND adres.trci_trci_id IN (2)

двойные строки на месте
2 мар 07, 13:52    [3853729]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
дубликаты на каком этапе возникают после первого join или второго?
2 мар 07, 13:57    [3853790]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
av-kuz
Сделал так
..двойные строки на месте


..FROM
     (select * from adres where adres.trci_trci_id = 2) adres, -- spisok adresov
     useradr, -- privyazka adresov k user card
     users -- dannye userOV
WHERE 
      users.pcard_id = useradr.pcard_pcard_id(+) AND adres.ci_id(+) = useradr.ci_ci_id
2 мар 07, 14:02    [3853838]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
после первого
2 мар 07, 14:05    [3853875]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
av-kuz
после первого

так на этом этапе их и нужно отсечь! например IN или DISTINCT
2 мар 07, 14:06    [3853885]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
2orawish

эффект тот же
2 мар 07, 14:11    [3853931]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
MaryCat
Member

Откуда: SPb
Сообщений: 56
av-kuz
2orawish

эффект тот же


А данные корректны?
2 мар 07, 14:16    [3853973]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6914
av-kuz
2orawish

эффект тот же

видимо orawish попался на ту же удочку, что и я. Он думал они на втором этапе появляются, повторюсь отсекайте их во время первого соединения
2 мар 07, 14:21    [3854016]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
2MaryCat возможны ошибки (

2alex-ls
из useradr в запросе участвуют два поля и Distinct по ним не дает результата, а IN можно применить только ко второй таблице...

ситуация примерно такая
WITH 
adres AS (
 SELECT 1 as ci_id,'tamb' as contacts_information, 2 trci_trci_id FROM dual UNION ALL
 SELECT 2, '12354',3 FROM dual UNION ALL
 SELECT 3, 'spb',2 FROM dual UNION ALL
 SELECT 4, 'yyy',2 FROM dual ),
useradr AS (
 SELECT 2 as ci_ci_id,'2323' as pcard_pcard_id FROM dual UNION ALL
 SELECT 1, '2323' FROM dual UNION ALL
 SELECT 3, '2121' FROM dual UNION ALL
 SELECT 4, '2020' FROM dual
 ),
users AS (
 SELECT '2323' as pcard_id,'Ivanov' as f_name FROM dual UNION ALL
 SELECT '2121','PETROV' FROM dual UNION ALL
 SELECT '2020','bob' FROM dual UNION ALL
 SELECT '2525', 'NET adresa' FROM dual
 )
SELECT ALL
users.f_name "FNAME",
adres.contacts_information
FROM
     adres, -- spisok adresov
     useradr, -- privyazka adresov k user card
     users -- dannye userOV
WHERE 
      users.pcard_id = useradr.pcard_pcard_id(+) AND 
adres.ci_id(+) = useradr.ci_ci_id
AND adres.trci_trci_id(+) = 2
2 мар 07, 16:07    [3854990]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Ну так и получить чего хотите из этого набора?
2 мар 07, 16:15    [3855056]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
нужно

FNAME      CONTA
---------- -----
Ivanov     tamb
PETROV     spb
bob        yyy
NET adresa

а получаеться

FNAME      CONTA
---------- -----
Ivanov     tamb
Ivanov                  --- вот этой строки недолжно быть
PETROV     spb
bob        yyy
NET adresa
2 мар 07, 16:28    [3855156]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Ну так развейте предложенное :)

FROM
     (select * from useradr, adres where adres.ci_id(+) = useradr.ci_ci_id AND adres.trci_trci_id = 2 ) t,
       users
WHERE 
      users.pcard_id = t.pcard_pcard_id(+)
2 мар 07, 16:34    [3855204]     Ответить | Цитировать Сообщить модератору
 Re: не получаеться объединить  [new]
av-kuz
Member

Откуда: Tambov
Сообщений: 47
ДА спасибо ! работает =)
2 мар 07, 17:00    [3855444]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить