![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросы
Клара © (2007-02-06 10:58:00)Доброго дня Вам, господа знатоки!
У нас возникла проблема в удалении записей из двух таблиц.
Имеется:
DELETE Reklama.*, zakasi.*, IIf([data_konca_pokaza]+7>=Date(),1,0) AS Выражение1
FROM Reklama INNER JOIN zakasi ON Reklama.kod_objavl = zakasi.kod_objavl
WHERE (((IIf([data_konca_pokaza]+7>=Date(),1,0))=0));
в таком варианте он не работает, что не так подскажите?
sniknik (2007-02-07 15:29:00) [1]> Что нужно сделать в этом случае?
http://support.microsoft.com/kb/308260/ru
Клара (2007-02-07 15:18:00) [2]Я нашла этот справочник, но то что лежит на поверхности я знаю наизусть, а вот подробности почемуто выдают, "Ошибка сценариев". Что нужно сделать в этом случае?
Может переустановить или обновить систему.
Клара (2007-02-07 12:33:00) [3]
> sniknik
Спасибо я попробую.
sniknik (2007-02-07 11:10:00) [4]> Вы каким руководством пользуетесь?
всегда тем, что идет с используемым сервером/движком т.е. для MSSQL это BOL, для Access его справка (чтобы не открывать сам аксесс, не лезть там в построение запросов только чтобы нажать там F1, просто вывел ссылку на JETSQL40.CHM на рабочий стол)
Клара (2007-02-07 09:46:00) [5]
> ЮЮ
Перечитала всё, что было под рукой об удалении, половина примеров из учебников не работает. Если не трудно ответьте: Вы каким руководством пользуетесь?
Клара (2007-02-07 09:39:00) [6]
> ЮЮ
Извините, что не общалась с Вами. Непредвиденные обстоятельства.
Я всё сделала. Спасибо!
sniknik (2007-02-06 14:22:00) [7]хмм... а как таблицы сделаны? я пробовал на примере из справки на "CONSTRAINT - предложение" нормально. хотя... раздела WHERE у меня не было, может его перенести? (ну типа если условие по нему проверяется несколько позже чем проверка на возможность удаления?...)
проверь на тех же таблицах
DELETE m.*
FROM main m INNER JOIN detail d ON (m.id=d.mainId AND d.name='21')
???
ЮЮ (2007-02-06 13:38:00) [8]
> с чего взял?
Попробовал.
'Невозможно удаление записей из указанных таблиц'
при
DELETE main.*
FROM main INNER JOIN detail ON main.id=detail.mainId
WHERE detail.name='21';
и нормальное удаление при
DELETE *
FROM main
WHERE Id in( SELECT MainId FROM detail WHERE name='21');
sniknik (2007-02-06 13:34:00) [9]> Похоже запись из мастер-таблицы должна присутствовать в запросе 1 раз, даже при включенном каскадном удалении.
с чего взял? все можно указывать, и сколько угодно раз, указание же из какой таблицы удалять (если в этом дело) указывается алиасом после DELETE xxx.* ... перед * (а если запрос однозначен, то ее вообще можно не писать. т.е. у тебя в примере [38] пройдет DELETE FROM ....)
это есть в справке access(Jet).
ЮЮ (2007-02-06 13:00:00) [10]Похоже запись из мастер-таблицы должна присутствовать в запросе 1 раз, даже при включенном каскадном удалении.
Тогда запрос следует переписать так:
DELETE *
FROM
Reclama where Reklama.kod_objavl in
(SELECTkod_objavl FROM zakasi WHERE (IIf([data_konca_pokaza]+7>=Date(),1,0))=0)
Sergey13 (2007-02-06 13:00:00) [11]> А как обратную связь включить в каскаде?
Зачем? Удаляя из родителя удалятся и в дочерней. Вот и удаляй запросом из родительской таблицы.
Клара (2007-02-06 12:39:00) [12]
> ЮЮ
DELETE Reclama.*
FROM ...
Ну и дальше, что.
Все, что было предложено я проделываю и работает только вариант [11].
Но в этом случае удаляются записи только из одной zakasi.
А как обратную связь включить в каскаде?
ЮЮ (2007-02-06 12:18:00) [13]
> Все флажки выставлены, при выполнении записи удаляются только
> из zakasi.
Запросом из [11]?
А если
DELETE Reclama.*
FROM ...
а из zakasi должно удалиться каскадом.
А записи в Reklama без единой записи в zakasi возможны и нужны?
Клара (2007-02-06 12:10:00) [14]
> Sergey13
Все флажки выставлены, при выполнении записи удаляются только из zakasi.
Клара (2007-02-06 12:08:00) [15]
> ЮЮ
> data_konca_pokaza
Берется из таблицы zakasi.
Sergey13 (2007-02-06 12:07:00) [16]> [31] Клара (06.02.07 12:04)
Только в схеме.
Клара (2007-02-06 12:04:00) [17]
> Sergey13
Это в запросе как то отражается или только в схеме данных?
Я пробовала все варианты.
Sergey13 (2007-02-06 11:59:00) [18]> [28] Клара (06.02.07 11:58)
Я говорю про каскадное удаление по внешнему ключу.
ЮЮ (2007-02-06 11:59:00) [19]Если data_konca_pokaza в Reklama, то
1) [11]
2)
DELETE *
FROM Reklama
WHERE
WHERE (((IIf([data_konca_pokaza]+7>=Date(),1,0))=0));
Клара (2007-02-06 11:58:00) [20]
> Sergey13
Я может, что-то не знаю? Речь идет о способах объединения (левое, правое, полное). Если нет то как это сделать.