Как добавить данные в столбец с нулевыми значениями из другой таблицы? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь заполнить свою таблицу собранными данными.

У меня есть три таблицы: INCIDENT_MAIN, INCIDENT_REPORT и PROJECT_PROFILE.

Я должен заполнить таблицу PROJECT_PROFILE из данных, предоставленных INCIDENT_MAIN AND INCIDENT_REPORT.

вот мой запрос на выполнение INNER JOIN

INSERT INTO PROJECT_PROFILE (INCIDENT_REPORT_ID, PROJECT_NAME,PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE,PROJECT_END_DATE,DOMESTIC_INTERNATIONAL,PROJECT_FACILITIES_LOGISTIC)
  SELECT PROJECT_NAME, PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE, ESTIMATED_PROJECT_END_DATE, DOMESTIC_INTERNATIONAL, PROJECT_FACILITIES_LOGISTIC
  FROM INCIDENT_MAIN INCIDENT_REPORT_ID
  INNER JOIN INCIDENT_REPORT ON INCIDENT_REPORT.INCIDENT_REPORT_ID = PROJECT_PROFILE.INCIDENT_REPORT_ID

Я получил сообщение об ошибке многоэлементного идентификатора 'PROJECT_PROFILE.INCIDENT_REPORT_ID', не может быть связано

Поэтому я решил сначала заполнить таблицу PROJECT_PROFILE INCIDENT_REPORT_ID, чтобы я мог собрать данные INCIDENT_REPORT_ID из таблицы INCIDENT_REPORT. PROJECT_PROFILE_ID - автоинкремент, так как я установил его как КЛЮЧ IDENTITY.

Данные вставлены просто отлично. Ниже приведен результат.

enter image description here

* Затронуто

234 строки.

Теперь я пытаюсь заменить значения NULL данными из INCIDENT_MAIN

Вот запрос

INSERT INTO PROJECT_PROFILE (PROJECT_NAME,PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE,PROJECT_END_DATE,DOMESTIC_INTERNATIONAL,PROJECT_FACILITIES_LOGISTIC)
  SELECT PROJECT_NAME, PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE, ESTIMATED_PROJECT_END_DATE, DOMESTIC_INTERNATIONAL, PROJECT_FACILITIES_LOGISTIC
  FROM INCIDENT_MAIN
  WHERE PROJECT_PROFILE_ID >='1'

Но теперь форма данных INCIDENT_MAIN вставляется в последнюю строку 234, что увеличивает PROJECT_PROFILE_ID, а значения NULL НЕ ЗАМЕНЯЮТСЯ.

enter image description here

Как правильно сделать запрос, чтобы значения NULL могли быть заменены реальными данными, и при этом значение PROJECT_PROFILE_ID не увеличивается.

EDITED

Итак, я попробовал этот запрос на обновление согласно предложению

UPDATE PROJECT_PROFILE
SET PROJECT_PROFILE.PROJECT_NAME = INCIDENT_MAIN.PROJECT_NAME,
PROJECT_PROFILE.PROJECT_PHASE = INCIDENT_MAIN.PROJECT_PHASE,
PROJECT_PROFILE.PROJECT_START_DATE = INCIDENT_MAIN.PROJECT_START_DATE,
PROJECT_PROFILE.PROJECT_END_DATE = INCIDENT_MAIN.ESTIMATED_PROJECT_END_DATE,
PROJECT_PROFILE.DOMESTIC_INTERNATIONAL = INCIDENT_MAIN.DOMESTIC_INTERNATIONAL,
PROJECT_PROFILE.PROJECT_FACILITY_LOGISTIC = INCIDENT_MAIN.PROJECT_FACILITIES_LOGISTIC
FROM PROJECT_PROFILE JOIN INCIDENT_MAIN ON
PROJECT_PROFILE.PROJECT_NAME= INCIDENT_MAIN.PROJECT_NAME
WHERE PROJECT_PROFILE.PROJECT_PROFILE_ID <='234'

получение (затронуто 0 строк)

1 Ответ

1 голос
/ 23 апреля 2019

Не зная схемы вашей таблицы, я просто догадываюсь ...

Я изменил условие JOIN на INCIDENT_REPORT.INCIDENT_REPORT_ID = INCIDENT_MAIN.INCIDENT_REPORT_ID.Если имя столбца неверное, пожалуйста, внесите соответствующие изменения

INSERT INTO PROJECT_PROFILE 
            (
                -- INCIDENT_REPORT_ID,  remove this line
                PROJECT_NAME,
                PROJECT_TYPE, 
                PROJECT_PHASE, 
                PROJECT_START_DATE,
                PROJECT_END_DATE,
                DOMESTIC_INTERNATIONAL,
                PROJECT_FACILITIES_LOGISTIC
            )
SELECT     PROJECT_NAME, 
           PROJECT_TYPE, 
           PROJECT_PHASE,  
           PROJECT_START_DATE, 
           ESTIMATED_PROJECT_END_DATE, 
           DOMESTIC_INTERNATIONAL, 
           PROJECT_FACILITIES_LOGISTIC
FROM       INCIDENT_MAIN INCIDENT_REPORT_ID
INNER JOIN INCIDENT_REPORT 
        ON INCIDENT_REPORT.INCIDENT_REPORT_ID = INCIDENT_MAIN.INCIDENT_REPORT_ID 

Мой совет: не вставляйте в таблицу.Сначала вы выполняете запрос, начиная с SEELCT до конца.Убедитесь, что результат соответствует желаемому.Затем вы добавляете оператор INSERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...