Вопрос № 37759: Добрый день!
Помогите сформировать два запроса к базе.
T1
id, dis
T2
id, dis1, dis2
1. Как удалить из T1 все записе которые содержаться в T2.
2. Как удалить из T1 записе, которые в T2 имеют пустое поле dis1.
И еще вопр...
Вопрос № 37.759
Добрый день!
Помогите сформировать два запроса к базе.
T1
id, dis
T2
id, dis1, dis2
1. Как удалить из T1 все записе которые содержаться в T2.
2. Как удалить из T1 записе, которые в T2 имеют пустое поле dis1.
И еще вопрос. Можите, в кратце, объеснить что такое индексирование, для чего оно нужно и как с этим работать.
Заранее всем спасибо.
Отправлен: 17.03.2006, 11:04
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Jadd
Здравствуйте, AllexZ!
По какому полю они завязаны друг на друге? Допустим по T1.id и T2.id
1) delete from T1 where T1.id in (select * from T2 where T2.id = T1.id)
2) delete from T1 where T1.id int (select * from T2 where T2.id = T1.id and T2.dis1 is NULL)
Индексирование - упорядочивание записей, вернее ссылок (указателей) на записи с целью быстрого поиска, сортировки и тп. Обычно, для индексации создаются индексы (индексные файлы и тп в зависимости от платформы). Как делается в каждом конкретном случае, читайте мануал к данной базе. Создать индексы можно и средствами sql.
Удачи.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Ответ отправлен: 17.03.2006, 11:17 Оценка за ответ: 5 Комментарий оценки: Спасибо. А как создавать индексные файлы, какое они имеют расширение. И как к ним обрашаться. Если не сложно можно ответить на эти воросы.
Отвечает: LanK
Здравствуйте, AllexZ!
Кратко уже не раз проходила книга Мартин Грабер "Введение в SQL" найдите в сети она есть. Прочитайте и больше не будете задавать такие вопросы. Она весьма проста и доходчива.
Индексирование
Допустим у вас таблица Сотрудники. В одной записи у Вас 50 полей - пол, диплом, и т.д..
Но чтобы найти сотрудника Вы чаще используете поля ФИО, цех.
Чтобы в вашей базе из 1 000 000 записей найти быстрее - создается индекс ФИО.
База данных (разные конечно по разному..) создает свою "внутреннюю" таблицу только с этими полями и естественно поиск происходит в 10ки раз быстрее.
Насчет запросов не отвечу, потому что не указана их взаимосвязь - по каким полям???
dis = dis1 ?
Тогда так:
1. delete from T1 where id in (select id from T1, T2 where T1.dis = T2.dis1)
Блин про T2 не понятно. Допустим T1.id - T2.id ??? :(((
delete from T1 where id in (select id from T1, T2 where T1.id = T2.id and Length(T2.dis1) = 0 )
или
delete from T1 where id in (select id from T1, T2 where T1.id = T2.id and T2.dis1 is Null )
В каждой БД свои функции is Null Length - ищите в справке.
P.S. всё же книгу прочитайте... даже ответить то толком никак :( не понятна ваша БД.
--------- Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: 9-ый класс)
Ответ отправлен: 17.03.2006, 11:29 Оценка за ответ: 5 Комментарий оценки: Спасибо. Все точно в цель. А где можно почитать, более подробно, про индексы?
Отвечает: 1e0n_xas
Здравствуйте, AllexZ!
1)delete from T1 where dis in (select dis1 from T2)
2)delete from T1 where id in (select id from T2 where dis1 is NULL)
Индексация это выделение памяти для хранения указателей индексируемых полей для ускоренного представления данных, будь то поиск, упорядочивание или группировка.
Ответ отправил: 1e0n_xas (статус: 2-ой класс)
Ответ отправлен: 18.03.2006, 15:25