Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

какая вьюха покажет на какой PRIMARY ссылается FOREIGN KEY ?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Пн Июл 18 2005 12:54    Заголовок сообщения: какая вьюха покажет на какой PRIMARY ссылается FOREIGN KEY ? Ответить с цитатой

в каком представлении можно увидеть на какой PRIMARY KEY ссылается FORAIGN KEY...
хочу найти таблицы, у которых первычный ключ есть, но на него никто не ссылается (т.е. нет в остальных таблицах соответствующего ему вторичного ключа)
....где то в словаре данных ведь наверняка есть информация куда указывает вторичный ключ...
я уже почти половину рабочего дня убил в поисках где это лежит и так и не нашел...
all_constraints не помогает (по крайней мере его одного не достаточно)...
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arbiter



Зарегистрирован: 25.03.2005
Сообщения: 10

СообщениеДобавлено: Ср Авг 10 2005 19:08    Заголовок сообщения: Ответить с цитатой

А в чем проблема? В этой вьюхе все и есть:

select index_name, table_name, constraint_name, constraint_type
from user_constraints a
where not exists (select *
from user_constraints b
where a.constraint_name = b.r_constraint_name)
and trim (a.constraint_type) = 'P'

Enjoy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Чт Авг 11 2005 11:18    Заголовок сообщения: Ответить с цитатой

Arbiter...
спасибо что ответил!

одна непонятность есть:
trim ведь в данном случае ничего не изменяет...
зачем она тут?
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arbiter



Зарегистрирован: 25.03.2005
Сообщения: 10

СообщениеДобавлено: Чт Авг 11 2005 12:19    Заголовок сообщения: Ответить с цитатой

РоманРХ писал(а):
Arbiter...
одна непонятность есть:
trim ведь в данном случае ничего не изменяет...
зачем она тут?


Привычка. Очень часто работал с вьюхами, у которых значение поля типа 'P ' (c пробелами).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Чт Авг 11 2005 16:12    Заголовок сообщения: Ответить с цитатой

Arbiter писал(а):
А в чем проблема? В этой вьюхе все и есть:

select index_name, table_name, constraint_name, constraint_type
from user_constraints a
where not exists (select *
from user_constraints b
where a.constraint_name = b.r_constraint_name)
and trim (a.constraint_type) = 'P'

Enjoy


БРАТ!
Потрать, пожалуйста, время на объяснение, что это за конструкция такая not exists

логика понятна, но нигде определения такого не нашел даже в
Oracle9i PL-SQL Скотт Урман, изд. Лори, 2004 сентябрь

я что то не просекаю как оно отрабатывает в самой себе
... и честно говоря конкретно запутался в этом.
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Пт Авг 12 2005 09:28    Заголовок сообщения: Ответить с цитатой

Arbiter писал(а):
А в чем проблема? В этой вьюхе все и есть:

select index_name, table_name, constraint_name, constraint_type
from user_constraints a
where not exists (select *
from user_constraints b
where a.constraint_name = b.r_constraint_name)
and trim (a.constraint_type) = 'P'

Enjoy


Слушай!
Удивительно как ты меня загнал в ступор...
я над твоим запросом кумекаю как никогда долго!

по первой моей мысли о твоём запросе я его у себя в голове переложил в такой вот вид

select index_name, table_name, constraint_name, constraint_type
from user_constraints
where constraint_type = 'P'
minus
select index_name, table_name, constraint_name, constraint_type
from user_constraints
where constraint_name = r_constraint_name

но твой запрос и то во что я его сначала переделал - абсолютно разные вещи!
это совсем другая логика отбора! как же я сначала ошибся!

not exists (select *
from user_constraints b
where a.constraint_name = b.r_constraint_name)

я не могу найти нигде описание такого действа...

кроме этого я уверен, что ты явно знаешь какую то тонкость в отношении представления ...._constaints, которая и позволила тебе найти такое решение, что твой запрос выдаст именно тот результат какой надо!

а ну давай колись! Smile))
иначе на твоей совести будет один сошедший с ума ДБА
Smile


я ещё методом тыка решил найти среди полученных таким образом таблиц хоть одну неверную - пока не нашел....
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arbiter



Зарегистрирован: 25.03.2005
Сообщения: 10

СообщениеДобавлено: Пт Авг 12 2005 10:47    Заголовок сообщения: Ответить с цитатой

Мой запрос расписывается так:
Код:

select index_name, table_name, constraint_name, constraint_type
  from user_constraints
 where constraint_type = 'P'
minus
select a.index_name, a.table_name, a.constraint_name, a.constraint_type
  from user_constraints a, user_constraints b
 where a.constraint_name = b.r_constraint_name
   and a.constraint_type = 'P'

А конструкция not exists не выбирает записи основного селекта, когда для него есть хотя бы одна запись в подселекте.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Пт Авг 12 2005 11:11    Заголовок сообщения: Ответить с цитатой

Arbiter писал(а):
А в чем проблема? В этой вьюхе все и есть:

Enjoy


всё!
разобрался!
не трать на меня время!

это я просто что то два дня тормозил...
всё просто - что за заморочки у меня возникли - сам сейчас не пойму!

бывают же блин помутнения сознания!
Smile))

тебе спасибо большое!
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
РоманРХ



Зарегистрирован: 18.07.2005
Сообщения: 6

СообщениеДобавлено: Пн Авг 15 2005 08:36    Заголовок сообщения: Ответить с цитатой

Arbiter писал(а):
Мой запрос расписывается так:
Код:

select
...
...
...
= 'P'

А конструкция not exists не выбирает...


странно на этом форуме работает ответ-вопрос
медлено

я когда сказал что разобрался - твоего ответа не было
а сегодня он есть, и ответ по времени раньше моего...
_________________
не уверен - не утверждай, но и не молчи!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...