ramy mohmed Ответов: 1

Справка нужно скопировать данные из основной таблицы а затем удалить из нее


Мне нужно скопировать с Эми ТБ для EmpRetirement стол &ампер; выход на пенсию таблица

Что я уже пробовал:

Выберите * в EmpRetirement
ОТ ЭМИ
Где (((EMP.JopEnd)<=сейчас()))
Того, Эми.Идентификатор Эми.Agenow;
* в отставку

DerekT-P

Вам нужно будет сообщить нам, какую СУБД вы используете, и дать нам определения таблиц (например, нам нужно знать, есть ли определенный столбец автоматического числа / автоматического приращения). А еще лучше прочтите учебник по SQL, и вы сами все поймете, возможно, раньше, чем получите ответ здесь.

ZurdoDev

Очень просто. Где ты застрял?

1 Ответов

Рейтинг:
2

CHill60

Если у вас все еще есть проблемы с этим и вам нужна помощь, то вам нужно дать нам гораздо больше информации. Например: какую базу данных вы используете (похоже на доступ?); каковы структуры таблиц; что вы хотите удалить и т. д. Действительно хорошей отправной точкой является предоставление некоторых выборочных данных и некоторых ожидаемых результатов.

Также прочтите следующее:
Некоторые рекомендации по размещению вопросов на форумах[^]
Идея статьи: Как не задать вопрос[^]

А пока: это исправит вашу попытку

SELECT * INTO EmpRetirement
FROM EMP
WHERE EMP.JopEnd<=Now()
ORDER BY Emp.ID, Emp.Agenow;
Вам понадобится 2-й запрос для таблицы выхода на пенсию..
SELECT * INTO Retirement FROM EMP
WHERE EMP.JopEnd<=Now()
ORDER BY Emp.ID, Emp.Agenow;
Теперь некоторые вещи, чтобы рассмотреть:
1. Это плохая практика иметь несколько таблиц с одной и той же схемой. Я не собираюсь вдаваться здесь в долгие рассуждения - исследования "Методы проектирования баз данных"[^]
2. Если эти таблицы уже существуют и вы не используете Access, то запросы завершатся неудачей - вам нужно будет использовать
INSERT INTO EmpRetirement
SELECT * FROM EMP …
Если вы используете Access, вам будет предложено и сказано, что таблица будет перезаписана - то есть все существующие данные будут потеряны.
3. Это также плохая практика для использования SELECT * - перечислите столбцы, которые вы хотите явно. Что делать, если кто - то добавит столбец в EMP, но не в EmpRetirement-ваш код немедленно потерпит неудачу. Именно поэтому @DerekTP123 упомянул столбцы auto-number/auto-increment - если и EMP, и EmpRetirement имеют столбец autonumber, то ваш запрос завершится неудачей.
Заключительная часть заключается в том, что вы, по-видимому, хотите удалить материал, который был скопирован. Это было бы ...
DELETE *
FROM EMP
WHERE EMP.JopEnd<=Now();
Однако я советую вам проверить, что вставка прошла успешно, прежде чем удалять какие-либо данные


Maciej Los

5ed!