Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

Можно ли в одном запросе почистить несвязанные записи   Найти похожие ветки 

 
sdram   (2002-10-10 11:56) [0]

Со временем в базе накапливаются потерянные записи из связанных таблиц. Как можно в запросе выбрать несвязанные записи?


 
Max Zyuzin   (2002-10-10 11:57) [1]

Можно конечно
select * from tab1, tab2
where tab1.PKField <> tab2.FKField


 
sdram   (2002-10-10 11:59) [2]

Спасибо


 
ЮЮ   (2002-10-10 12:02) [3]

Рано :-)
И что вернёт этот запрос?


 
Johnmen   (2002-10-10 12:09) [4]

DELETE FROM T1 A
WHERE NOT EXIST
(SELECT B.id FROM T2 B WHERE A.id=B.id)


 
ЮЮ   (2002-10-10 12:09) [5]

select * from DetailTabe
left join MasterTable on DetailTabe.MasterID=MasterTable.ID
where MasterTable.ID is null


 
Max Zyuzin   (2002-10-10 12:11) [6]

>ЮЮ © (10.10.02 12:02)
Да согласен :) правильно будет
select * from tab2
where tab2.FKField not in (select tab1.PKField from tab1)



 
LordOfSilence   (2002-10-10 12:36) [7]

Коллеги, я, конечно, извиняюсь, но
в Access есть предопределенный конструктор
запроса "Записи без подчиненных". Может и его
тоже стОит попробовать господину sdram?


 
Mike_Goblin   (2002-10-10 13:09) [8]

А может лучше грамотно спроектировать базу, чтобы записи не терялись?


 
Max Zyuzin   (2002-10-10 13:17) [9]

>Mike_Goblin © (10.10.02 13:09)
Ну это конечно да... только вопрос стоял по другому. А я вот не в курсе, скажите кто знает есть ли в аксесе понятия транзакций?


 
LordOfSilence   (2002-10-10 13:27) [10]

To Max Zyuzin:
IMHO, нет, можно имитировать TADOConnection.CommitTrans
и т.п.


 
sniknik   (2002-10-10 14:33) [11]

господа а как же хелп? читаем

Инструкция TRANSACTION
Используется для запуска и завершения явных транзакций.

Синтаксис
Запускает новую транзакцию.

BEGIN TRANSACTION

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

COMMIT [TRANSACTION | WORK]

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

ROLLBACK [TRANSACTION | WORK]

Дополнительные сведения
Автоматический запуск транзакции невозможен. Чтобы начать транзакцию, ее необходимо явно запустить с помощью инструкции BEGIN TRANSACTION.

Допускается пять уровней вложения транзакций. Чтобы запустить вложенную транзакцию, воспользуйтесь инструкцией BEGIN TRANSACTION в контексте существующей транзакции.

Для присоединенных или связанных таблиц транзакции не поддерживаются.


(хелп из Access) и BEGIN TRANSACTION и остальные комманды срабатывают из ADOCommand. а TADOConnection.CommitTrans никак не может иммитировать того чего нет, ADO это же просто интерфейс. или я не прав? и зачем это нужно? вопрос о другом.



 
Max Zyuzin   (2002-10-10 14:45) [12]

>sniknik © (10.10.02 14:33)
и зачем это нужно? вопрос о другом.

Это к вопросу о А может лучше грамотно спроектировать базу, чтобы записи не терялись?
:o)



 
Johnmen   (2002-10-10 14:48) [13]

>sniknik © (10.10.02 14:33)

То, что ты описал, транзакционным механизмом в истинном понимании не является. Это всего лишь некая эмуляция, громко названная тр-ми.


 
sniknik   (2002-10-10 14:54) [14]

я это не писал, скопировал из хелпа. а в остальном согласен. так же как в Access есть так называемые процедуры на самом деле просто запросы так обозвали. :-))

и в этом случае эта эмуляция не подходит т.к.
"Для присоединенных или связанных таблиц транзакции не поддерживаются."


 
Johnmen   (2002-10-10 15:17) [15]

>sniknik © (10.10.02 14:54)
>я это не писал...

А я и не утверждаю этого. См. "То, что ты описал"
Я прекрасно понимаю, что ты не мог написать такой пурги :)))
А может это корявый перевод ? Что, кстати, относится и к так называемым процедурам ? Или у нас с Мелкомягкими разная терминология ? :-)


 
sniknik   (2002-10-10 15:34) [16]

скорей всего терминология или у них мания величия :-), английский вариант я тоже смотрел, то же, утверждают что в Access есть процедуры. (без переменных и тд. в один запрос! ;?( )

счас поищу описание.


 
sniknik   (2002-10-10 15:38) [17]

во любуйтесь

Инструкция CREATE PROCEDURE
Создает сохраненную процедуру.

--------------------------------------------------------------------------------
Синтаксис
CREATE PROCEDURE процедура
[параметр_1 типДанных[, параметр_2 типДанных[, ...]] AS инструкцияSQL

Ниже перечислены аргументы инструкции CREATE PROCEDURE:

Элемент Описание
процедура Имя процедуры. Это имя должно удовлетворять стандартным правилам именования.
параметр_1, параметр_2 От 1 до 255 имен полей или параметров. Например:
CREATE PROCEDURE Продажи_по_странам [Начальная дата] DateTime, [Конечная дата] DateTime;

Более подробные сведения о параметрах содержатся в разделе PARAMETERS.

типДанных Один из первичных типов данных SQL ядра Microsoft Jet или один из их синонимов.
инструкцияSQL Инструкция SQL, такая как SELECT, UPDATE, DELETE, INSERT, CREATE TABLE, DROP TABLE и т. д.


Дополнительные сведения
Процедура SQL состоит из предложения PROCEDURE (которое определяет имя процедуры), необязательного списка описаний параметров и одной инструкции SQL.

Имя процедуры не должно совпадать с именем существующей таблицы.


и определение как они понимают слово процедура

процедура
Аналогична представлению, с тем лишь исключением, что синтаксис SQL предусматривает использование инструкций SELECT (запросы с возвращением строк) для передачи параметров и использование инструкций DML (запросы без возвращения строк) UPDATE, INSERT, DELETE и SELECT INTO. Фактически процедура совпадает с объектом querydef, с тем лишь исключением, что ее можно создать с использованием синтаксиса SQL без обращения к модели объектов доступа к данным (DAO).



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.008 c
1-101349
Eugene_post
2002-10-20 22:34
2002.10.31
Перехват нажатия Enter в TEdit


14-101466
Andrey_Semenov
2002-10-11 07:04
2002.10.31
Win API


1-101190
neodiX
2002-10-11 15:46
2002.10.31
Hook на PopUp ы.


3-101069
Shadow
2002-10-13 18:31
2002.10.31
Как создать новую DFB-таблицу, редактировать и сохранить?


1-101268
Manulo
2002-10-22 11:19
2002.10.31
Имена компонентов....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский