Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Написание Exists / 10 сообщений из 10, страница 1 из 1
19.04.2017, 10:30
    #39440682
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Доброе утро. Есть n-кол-во таблиц, при формировании выгрузки получаю параметры ACT_ID, ACT_TYPE,SERIAL_ID.
Сформировал таблицу в exists, дабы найти все ACT_TYPE определенного вида.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select ACT_ID,ACT_TYPE,SERIAL_ID
from my_table m
where exists
(
select * from my_table1 m1
where m.ACT_TYPE=4--тип нужного акта
and m1.ACT_ID=m.ACT_ID
)


Результат выдает все значения, а нужно получить только те, где есть акты с типом=4(возврат, к примеру). То есть увидеть акты приема, передачи только в том случае, если по данному железу был акт возврата.
Помогите, плиз, найти ошибку в exists'е. Буду очень признателен.
...
Рейтинг: 0 / 0
19.04.2017, 10:36
    #39440691
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Reflector
Код: plsql
1.
2.
from my_table1 m1
where m.ACT_TYPE=4

Указывать фильтр на правильном уровне.
...
Рейтинг: 0 / 0
19.04.2017, 10:40
    #39440697
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Elic, виноват, конечно там m1. Важна сама суть, не понимаю, почему запрос возвращает все, когда в подзапросе четкое ограничение.
...
Рейтинг: 0 / 0
19.04.2017, 10:44
    #39440702
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Reflectorпочему запрос возвращает все, когда в подзапросе четкое ограничение.По my_table тип не ограничен. У тебя проблемы с элементарным SQL?
...
Рейтинг: 0 / 0
19.04.2017, 10:46
    #39440704
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
А зачем его ограничивать по my_table? Я хочу увидеть все акты по всем железкам, но где был сделан возврат.
Какого типа должно в таком случае быть ограничение в основном запросе?
...
Рейтинг: 0 / 0
19.04.2017, 11:17
    #39440730
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Reflectorпо всем железкамТы чересчур шифруешься my_table-ами. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
19.04.2017, 11:26
    #39440747
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Elic, Я бы рад не шифроваться, но описать все таблицы очень долго) Хотел наиболее сжато передать код.
Суть вроде понятна. Просто если ограничивать главный запрос, не увижу информации по нужным актам. Вот и хочется увидеть все железо, что было возвращено. Условно говоря, если ACT_TYPE<>4, то не должно быть ни одной записи. А если =4, то выдать весь список для каждой железки.
...
Рейтинг: 0 / 0
19.04.2017, 11:28
    #39440748
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
Код: plsql
1.
2.
3.
4.
select act_id,act_type,serial_id
from my_table m
where m.act_type = 4--тип нужного акта
and   m.act_id in (select m1.act_id from my_table1 m1);
...
Рейтинг: 0 / 0
19.04.2017, 11:51
    #39440758
Reflector
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
AmKad,
Спасибо) зациклился я на exists. Сам уже начал догадываться,но Вы правы)
...
Рейтинг: 0 / 0
19.04.2017, 11:52
    #39440762
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание Exists
ReflectorAmKad,
Спасибо) зациклился я на exists. Сам уже начал догадываться,но Вы правы) 20413465
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Написание Exists / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]