Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2015, 21:28   #1
Anna Nodelman
Новичок
Джуниор
 
Регистрация: 24.01.2015
Сообщений: 4
По умолчанию Сканирование таблиц в SQL

В задаче требуется просканировать 5 таблиц и вернуть для объектов, не имеющих связей с другими таблицами, определенные данные. Советуют использовать not exists, а не join.
На английском задача сформулирована так:

Create a SP named ‘sp_get_orphans’ that will perform the following task:
* Scan all of the tables and return for objects which have no ties to the other tables (E.g. – if there is a loan which is listed for an account that does not exist) the following information:
- ID
- Name
- Type of object
- Table name

Я запуталась, буду рада, если кто-то даст направление. Спасибо.
Anna Nodelman вне форума Ответить с цитированием
Старый 24.01.2015, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Чухня какая-то... Не похоже это на промышленную задачу. Это что? Что-то типа "Сделать IDE для админки СУБД"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.01.2015, 21:58   #3
Anna Nodelman
Новичок
Джуниор
 
Регистрация: 24.01.2015
Сообщений: 4
По умолчанию

Это не промышленная задача, это домашнее задание. А тут только промышленные задачи можно писать? А все, что не помышленная задача, является чухней?
Anna Nodelman вне форума Ответить с цитированием
Старый 24.01.2015, 22:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что за проблема с Exists? Ну так, например

Код:
SELECT T1.*
  FROM Table1 T1
  WHERE NOT EXISTS(SELECT 1 FROM Table2 T2 WHERE T2.Field=T1.Field)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.01.2015, 22:13   #5
Anna Nodelman
Новичок
Джуниор
 
Регистрация: 24.01.2015
Сообщений: 4
По умолчанию

Сейчас попоробую, спасибо большое!
Anna Nodelman вне форума Ответить с цитированием
Старый 24.01.2015, 22:19   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Это не промышленная задача, это домашнее задание. А тут только промышленные задачи можно писать? А все, что не помышленная задача, является чухней?
Спрашивать можно про все, в том числе и о чухне. Слово то какое, гы. Но вопрос и правда чухня
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.01.2015, 22:24   #7
Anna Nodelman
Новичок
Джуниор
 
Регистрация: 24.01.2015
Сообщений: 4
По умолчанию

Ой ну простите, что вас, умников, побеспокоили такой чухней. Больше не буду. Типа оборжать чей-то глупый вопрос, это такой нормальный способ показать, как мы много всего знаем. Это тут так принято да?
Anna Nodelman вне форума Ответить с цитированием
Старый 24.01.2015, 22:30   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ни кто ни кого не собирался оборжать. Шуток не понимаешь? Не нравится - не спрашивай, все в печали, занавес
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.01.2015, 22:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А тут только промышленные задачи можно писать? А все, что не помышленная задача, является чухней?
Не надо утверждать то, чего я не говорил.
Цитата:
Типа оборжать чей-то глупый вопрос, это такой нормальный способ показать, как мы много всего знаем. Это тут так принято да?
Давай ка я тебе поясню как на самом деле выглядит твоя задача.
Раз ты не желаешь понять смысл работы баз данных то вот тебе кое-что на заметку.
Итак. Я не силен в аглицком, поэтому полагаюсь на твой перевод, который говорит по факту следующее (утрирую): Есть бесчисленное множество таблиц. Среди них нужно отобрать некоторые, в которых есть набор полей, и нет реляций.
База данных, как ты наверное знаешь, это набор таблиц, которые содержат однотипную информацию. Информации может быть сколь угодно много, но тип этой информации для каждой записи не повторяется. Однако одна таблица не обязательно должна быть похожа на другую. Т.е. набор полей у них разный. Это определяется (или точнее регулируется) так называемыми "нормальными формами", которые предписывают как именно таблицы должны между собой взаимодействовать с целью комапктного хранения данных и быстрого доступа по определенным критериям. Поэтому в СУБД механизм "перебрать все таблицы" скрыт на административном уровне. Нельзя так просто сказать в обычном запросе, пример коего привел Аватар, что мол нужно вернуть для объектов, не имеющих связей с другими таблицами, определенные данные.
Нужно обязательно знать как именно идентифицировать твои объекты.
Задача, поставленная подобным как в теме образом, по факту решается в несколько этапов:
1) Обратиться к системной таблице базы, которая хранит список всех таблиц
2) Присоединить к выборке из списка таблиц данные из системной таблицы, хранящей список полей
3) В этих двух обьединенных шагах отобрать таблицы, у которых есть поля (названия их перечислены в топе) и важно!: типы этих полей обязаны совпадать, чтоб не было нужды приводить их к единому типу (кастовать).

Так вот к чему это я: Эта задача ниразу ни тривиальная даже для учебки. Более того механизм решения такого задания разный и зависит от самой СУБД.
Поэтому задание это - чушь на постном масле, если ты не делаешь управляющую программу для АБД (надеюсь ты в курсе кто такой АБД?), поскольку в обычной эксплуатации баз данных не делают таких анализов структуры. Более того такие задачи подразумевают наличие в базе избыточной информации, что недопускается нормальными программистами из-за понижения КПД работы с базой.

А теперь о твоем поведении. Скажу открыто - не нравится, иди на другие форумы. Не надо показывать у нас свой гонор и норов, тебя либо засмеют либо будут игнорировать. Если ты этого не понимаешь, то лучше не пиши тут ничего, чтоб не провоцировать никого.
И совет на будущее: Задачи, которые ставишь перед другими, научись понимать хоть в основе, иначе ответы будут под стать вопросу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформулирование Sql запроса(из 2 таблиц) maxbls БД в Delphi 2 11.01.2013 17:36
SQL запрос с 2-ух связанных таблиц lot555 SQL, базы данных 4 09.07.2012 14:43
Создание таблиц SQL. Delphi RikkiTan Помощь студентам 2 01.05.2012 20:59
[SQL] Связь нескольких таблиц Never74 БД в Delphi 5 20.01.2012 17:27
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26