Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запросы


Страницы:   1 2 3

Клара ©   (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

Я может, что-то не знаю? Речь идет о способах объединения (левое, правое, полное). Если нет то как это сделать.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо