Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
1-101310
irmantukas
2002-10-19 20:56
2002.10.31
DBGrid и Table


3-101088
Heathen
2002-10-08 17:14
2002.10.31
SQL в ADO


3-101128
REL_
2002-10-10 10:24
2002.10.31
QReport


3-101132
Romul
2002-10-10 11:05
2002.10.31
Формат даты в Access


4-101572
Rasa
2002-09-18 04:01
2002.10.31
Как же все-таки в win98 изменить ресурсы?