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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.041 c
11-1084284543
Sakr
2004-05-11 18:09
2004.12.19
Вызов процедуры сразу после Unit1_1.inc


11-1084142128
Диман
2004-05-10 02:35
2004.12.19
Картинки в ListView


1-1101749947
stalk001
2004-11-29 20:39
2004.12.19
маска edit (принимать только integer)


9-1092598064
Knoxville
2004-08-15 23:27
2004.12.19
Программа чтения игр от PlayStation


1-1101935725
Tack
2004-12-02 00:15
2004.12.19
THotKey.Eanbled - лучше и не пробовать... :-(





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский