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

Откуда:
Сообщений: 53
Существует запрос

select distinct p.LASTNAME, p.FIRSTNAME,pf.IDLIST

from pfiles p, pfile2list pf

where p.LASTNAME='Иванов'
and p.FIRSTNAME='Иван'
and pf.IDPFILE=p.idpfile

Две таблице в первой ID человека idpfile имя, отчество воторой таблице ID человека и номер по определенному списку (pf.IDLIST ), проблема в том что человек может быть не влючен во вторую таблицу, а хочется чтобы результат запроса выдавал следующие колонки фамилию, имя, и номер по списку, а если человек не влючен во второй список то номер по списку был бы пустой
Сейчас же получается что те люди которые не влючены в список теряются Поможите люди добрые.
7 апр 06, 09:43    [2534721]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
left outer join

and p.idpfile=pf.IDPFILE (+)
7 апр 06, 09:45    [2534733]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
что значит left outer join
если просто поставить (+) в конце то ничего не изменилось
7 апр 06, 10:34    [2534992]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
pgres
Member

Откуда: Харьков
Сообщений: 140
select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p left outer join pfile2list pf on pf.IDPFILE=p.idpfile
where p.LASTNAME='Иванов'
and p.FIRSTNAME='Иван'
7 апр 06, 10:38    [2535023]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
amitx
что значит left outer join
если просто поставить (+) в конце то ничего не изменилось


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

То что тебе написали это два варианта одного и того же(внешнее объединение) - в первом случае это стандарт 99го года - во втором 92го(это как раз плюсик))))
7 апр 06, 10:43    [2535047]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
У меня toad ругается на это

left outer join
7 апр 06, 10:44    [2535052]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
DmitryDB
amitx
что значит left outer join
если просто поставить (+) в конце то ничего не изменилось


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

То что тебе написали это два варианта одного и того же(внешнее объединение) - в первом случае это стандарт 99го года - во втором 92го(это как раз плюсик))))

А что плюсики Oracle включили в стандарт SQL99?
Не знал, ссылка есть?
7 апр 06, 10:46    [2535067]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
amitx
если просто поставить (+) в конце то ничего не изменилось

А вы не вставляйте в конце ;) напишите туда, куда вам посоветовали...
7 апр 06, 10:48    [2535073]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
А что плюсики Oracle включили в стандарт SQL99?
Не знал, ссылка есть?


Наоборот плюсики это 92года стандарт)))
7 апр 06, 10:52    [2535089]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
select p.LASTNAME, p.FIRSTNAME ,(select pf.IDLIST from pfile2list pf where pf.IDPFILE=p.idpfile) stat
from pfiles p
where p.LASTNAME='иванов'
and p.FIRSTNAME='иван'

какую -то хрень left outer join втираете всем спасибо
7 апр 06, 10:55    [2535107]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
amitx
select p.LASTNAME, p.FIRSTNAME ,(select pf.IDLIST from pfile2list pf where pf.IDPFILE=p.idpfile) stat
from pfiles p
where p.LASTNAME='иванов'
and p.FIRSTNAME='иван'

какую -то хрень left outer join втираете всем спасибо

И не говорите, вообще бредовый оператор (да и плюсик тоже). Конечно же, выполнять запрос для каждой строки гораздо лучше. Оракл вообще любит, когда его больше заставляют работать, а то так ведь и облениться можно.
7 апр 06, 11:09    [2535202]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
а ваше решение ???
Вот это не работает
select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p left outer join pfile2list pf on pf.IDPFILE=p.idpfile
where p.LASTNAME='Иванов'
and p.FIRSTNAME='Иван'
7 апр 06, 11:13    [2535224]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Sergey M
Member

Откуда: г. Барнаул
Сообщений: 5462
Про плюсик...тынц
7 апр 06, 11:15    [2535247]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
DmitryDB

А что плюсики Oracle включили в стандарт SQL99?
Не знал, ссылка есть?


Наоборот плюсики это 92года стандарт)))

Киньте ссылку, если Вас не затруднит, я про такое впервые слышу.
Если есть пробелы в знаниях, их надо восполнить, т.к. не помню я там плюсиков, честно говоря. Всегда считал, что это чисто фича Oracle.
7 апр 06, 11:18    [2535282]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
Снимаю шляпу
select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p, pfile2list pf
where p.LASTNAME='иванов'
and p.FIRSTNAME='иван'
and pf.IDPFILE(+)=p.idpfile
7 апр 06, 11:20    [2535294]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
amixt

Вот это не работает
select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p left outer join pfile2list pf on pf.IDPFILE=p.idpfile
where p.LASTNAME='Иванов'
and p.FIRSTNAME='Иван'


Я тоад не видел, но думаю это проблемма именно вашей среды разработки, оракл отлично понимает подобные конструкции вот только не помню с какой версии, для более старых так

select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p pfile2list pf
where
pf.IDPFILE=p.idpfile(+)
/*плюс ставится там где у тебя есть возможность NULL.
pf.IDPFILE(+)=p.idpfile*/
and p.LASTNAME='Иванов'
and p.FIRSTNAME='Иван'[/quot]

а вообще там кто то ссылочку кинул на статью про outer join советую почитать потому как твой способ это чистой воды извращение.
7 апр 06, 11:22    [2535330]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
amitx
Снимаю шляпу
select p.LASTNAME, p.FIRSTNAME,pf.IDLIST
from pfiles p, pfile2list pf
where p.LASTNAME='иванов'
and p.FIRSTNAME='иван'
and pf.IDPFILE(+)=p.idpfile

Тоже самое Вам во 2-ом посте еще написали.
7 апр 06, 11:23    [2535337]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
Киньте ссылку, если Вас не затруднит, я про такое впервые слышу.
Если есть пробелы в знаниях, их надо восполнить, т.к. не помню я там плюсиков, честно говоря. Всегда считал, что это чисто фича Oracle.


Я это в Оракловой доке читал, так что там думаю имелся ввиду Oracle SQL стандарт)))

Тоже самое Вам во 2-ом посте еще написали


Ну человеку никто необъяснил для чего это всё и то что плюсик могет быть как справа так и слева)))
7 апр 06, 11:31    [2535408]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
amitx
Member

Откуда:
Сообщений: 53
DmitryDB
Ну человеку никто необъяснил для чего это всё и то что плюсик могет быть как справа так и слева)))

логично and p.idpfile(+)=pf.IDPFILE плюсик был поставленн не так
7 апр 06, 11:39    [2535474]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Alexey Polovinkin
Member

Откуда: Киев
Сообщений: 490
Господа, боюсь ошибится, но LEFT OUTER JOIN - это как раз SQL92
а (+) - это не стандарт вообще - это фича "by ORACLE"

Есль кто-то знает точнее - вываливайте сюда.
7 апр 06, 12:22    [2535842]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
В Oracle Student Guide к 9ке написано про (+)
Oracle proprietary syntax for versions 8i and earlier
Там же про всякие JOIN
SQL: 1999 compliant syntax for version 9i
7 апр 06, 12:40    [2536008]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Заглянул
Member

Откуда: nowhere
Сообщений: 403
2 DmitryDB:

Написано же "proprietary". Где написано про то, что (+) когда-либо входил в стандарт?



Отсюда можно скачать "Second Informal Review Draft" стандарта, за официальные документы просют деньги.
Попытайтесь найти в документе sql1992.txt упоминания о (+).
7 апр 06, 13:19    [2536274]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Alexey Polovinkin
Member

Откуда: Киев
Сообщений: 490
DmitryDB

...
SQL: 1999 compliant syntax for version 9i


SQL: 1999 - это что стандарт?
7 апр 06, 13:24    [2536317]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
Заглянул
Member

Откуда: nowhere
Сообщений: 403
SQL99 - это еще один стандарт
7 апр 06, 14:14    [2536645]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос помогите с логикой  [new]
DmitryDB
Member

Откуда:
Сообщений: 180
давайте сойдемся на том, что я где-то чего-то не так перевёл.:)
7 апр 06, 15:24    [2537086]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить