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

Вниз

SQL. DELETE из одной (нескольких таблиц) при использ. нескольких   Найти похожие ветки 

 
SergP.   (2004-11-17 20:38) [0]

1. Нужно удалить записи из одной таблицы, но при этом в запросе участвует несколько таблиц. Подскажите какой должен быть правильный синтаксис, а то что-то я запутался, а в JETSQL40.chm только простейшие примеры для одной таблицы.
Например:
Нужно удалить записи из table1, те которые удовлетворяют условию:
table1.field1=table2.field1 and table2.field2=<какое-то значение>

Конечто я пока обошелся вложенным select"ом, но интерестно как это без select"а записывается.

2. Как удалить записи сразу из 2-х таблиц? Можно ли такое делать?


 
YurikGL ©   (2004-11-17 20:40) [1]

1.
delete from table1 where field1="aa" and field2="bb"

2.
Что значит сразу? Одним запросом - вроде нет.


 
sniknik ©   (2004-11-17 20:51) [2]

> Нужно удалить записи из table1, те которые удовлетворяют условию:
> table1.field1=table2.field1 and table2.field2=<какое-то значение>

DELETE a.* FROM table1 a INNER JOIN table2 b ON a.field1=b.field1 WHERE b.field1=<какое-то значение>


 
SergP.   (2004-11-17 20:53) [3]


> YurikGL ©   (17.11.04 20:40) [1]
> 1.
> delete from table1 where field1="aa" and field2="bb"


Нет. Я имел ввиду удаление из одной таблицы, но в запросе должно участвовать несколько...

Записи должны удаляться из table1, но в запросе участвуют table1 и table2. По такому условию (в упрощенном виде):

> table1.field1=table2.field1 and table2.field2=<какое-то
> значение>



> 2.
> Что значит сразу? Одним запросом - вроде нет.


просто в условии для удаления есть связи между этими двумя таблицами. Разве нельзя писать: delete from table1,table2 where ...?


 
sniknik ©   (2004-11-17 20:56) [4]

для более быстрого отрабатывания желательно иметь индексы по обьеденяемым полям

> Как удалить записи сразу из 2-х таблиц? Можно ли такое делать?
можно сделать внешний ключь с удалением связаных записей (удаляеш в одной во второй автоматом удалится)
читай JETSQL40.chm внимательнее (см "Предложение CONSTRAINT")


 
ЮЮ ©   (2004-11-18 04:11) [5]

Это запрос для MS SQL. Возможно и в Access подобное прокатит

 DELETE FROM E_Staff
   WHERE
     Id IN (
       SELECT s.ID
       FROM
         E_Staff s
         LEFT JOIN EI_Vacancies iv ON s.Id = iv.Staff
         LEFT JOIN E_Vacancies v ON s.Id = v.Staff
         LEFT JOIN E_VacDocEntryVacancies dv ON s.Id = dv.Staff
       WHERE
         (s.WorkerOccupation IS NULL) AND (s.EmployeeOccupation IS NULL) AND
         (iv.ID IS NULL) AND (v.ID IS NULL) AND (dv.ID IS NULL)
     )


 
kostan ©   (2004-11-18 05:14) [6]

< sniknik ©   (17.11.04 20:56) [4]
а что у Access есть внешние ключи?
(переходи на SQL сервера (типа IB)  там есть Cascade)


 
sniknik ©   (2004-11-18 08:23) [7]

Ю ©   (18.11.04 04:11) [5]
не прокатит, но переделать возможно нужно только обьеденения сделать вложенными и все (вродебы, на первый взгляд).

kostan ©   (18.11.04 05:14) [6]
> а что у Access есть внешние ключи?
а что первый раз я невнятно сказал? у меня наверное манная каша между зубов застряла, когда писал... повторять тем не менее не буду.

> (переходи на SQL сервера (типа IB)  там есть Cascade)
а потом переходи обратно, тут есть currency... (бред, хотя, неудачный пример он действительно здесь есть, а в IB нету (насколько знаю), а по аналогии с твоим советом надо было взять чтото что и там и там есть)



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

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
8-1096018445
PashkaCool
2004-09-24 13:34
2004.12.19
Как исключить из BitMap синий цвет?


1-1101483554
VasRog
2004-11-26 18:39
2004.12.19
Сортировка большого массива


3-1100858467
Molchanov
2004-11-19 13:01
2004.12.19
Экспорт в ACCESS


14-1101975214
Ditrix
2004-12-02 11:13
2004.12.19
психология программра


14-1101713889
uw
2004-11-29 10:38
2004.12.19
Порнуха лезет