Форум: "Базы";
Текущий архив: 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.009 c