Ошибка при вставке в mysql?

  INSERT INTO project_dim
            (project_id,
             project_name,
             client_name,
             list_type,
             project_start_date,
             project_create_date,
             actual_project_end_date,
             scheduled_end_date,
             created_by,
             project_manager,
             project_specialty,
             quota_country,
             quota,
             create_date,
             update_date)
VALUES      ( (SELECT p.project_id,
                      p.project_name,
                      p.client_name,
                      p.list_type,
                      pt.project_start_date,
                      Date(p.created_date),
                      pt.actual_completion_date,
                      pt.scheduled_completion_date,
                      p.created_by,
                      Concat(ep.first_name, ' ', ep.last_name),
                      sp.specialty_name,
                      pqd.country,
                      pqd.quota
               FROM   project_details p,
                      project_tracker pt,
                      employee_details ep,
                      specialty sp,
                      project_quota_details pqd
               WHERE  p.project_tracker_id = pt.project_tracker_id
                      AND p.project_id = pqd.project_id
                      AND pqd.specialty_id = sp.specialty_id),
              NULL,
              NULL )  

Я вставляю null, null после значений из оператора select. Это как-то неправильно? Я получил это сообщение об ошибке

1241 - Операнд должен содержать 1 столбец (столбцы)

0
nl ja de

3 ответы

Попробуйте использовать INSERT INTO ... SELECT..FROM вместо INSERT INTO..VALUES . Вы можете включить значения null в качестве столбцов.

Вам также не хватает условия JOIN для таблицы employee_details ep . Вам также необходимо добавить это:

INSERT INTO project_dim 
(
  project_id, project_name, client_name, list_type,
  project_start_date, project_create_date, actual_project_end_date,
  scheduled_end_date, created_by, project_manager, project_specialty,
  quota_country, quota, create_date, update_date
)
SELECT p.project_id,
       p.project_name,
       p.client_name,
       p.list_type,
       pt.project_start_date,
       Date(p.created_date),
       pt.actual_completion_date,
       pt.scheduled_completion_date,
       p.created_by,
       Concat(ep.first_name, ' ', ep.last_name),
       sp.specialty_name,
       pqd.country,
       pqd.quota, 
       NULL, 
       NULL
FROM   project_details p
INNER JOIN project_tracker pt
  ON p.project_tracker_id = pt.project_tracker_id
INNER JOIN project_quota_details pqd
  ON p.project_id = pqd.project_id
INNER JOIN specialty sp
  ON pqd.specialty_id = sp.specialty_id
INNER JOIN employee_details ep
  ON       --- add join condition here for this table
1
добавлено
@ user1597811 рад, что он работает.
добавлено автор Taryn, источник
Это сработало хорошо. благодаря
добавлено автор user1597811, источник
INSERT INTO project_dim
        (project_id,
         project_name,
         client_name,
         list_type,
         project_start_date,
         project_create_date,
         actual_project_end_date,
         scheduled_end_date,
         created_by,
         project_manager,
         project_specialty,
         quota_country,
         quota,
         create_date,
         update_date)
VALUES      ( SELECT p.project_id,
                  p.project_name,
                  p.client_name,
                  p.list_type,
                  pt.project_start_date,
                  Date(p.created_date),
                  pt.actual_completion_date,
                  pt.scheduled_completion_date,
                  p.created_by,
                  Concat(ep.first_name, ' ', ep.last_name),
                  sp.specialty_name,
                  pqd.country,
                  pqd.quota,
          null,
          null
           FROM   project_details p,
                  project_tracker pt,
                  employee_details ep,
                  specialty sp,
                  project_quota_details pqd
           WHERE  p.project_tracker_id = pt.project_tracker_id
                  AND p.project_id = pqd.project_id
                  AND pqd.specialty_id = sp.specialty_id)
1
добавлено
Весь оператор insert корректен, но перед предложением FROM мы должны поместить нулевые значения.
добавлено автор Madhav, источник

Лучше всего удалить предложения значений и просто использовать SELECT (с парой нулевых столбцов в предложении SELECT для нужных вам бланков).

Что-то вроде этого:-

INSERT INTO Project_Dim 
( Project_Id, Project_Name, Client_Name, List_Type, Project_Start_Date, Project_Create_Date, Actual_Project_END_Date, Scheduled_End_Date, Created_By, Project_Manager, Project_Specialty, Quota_Country, Quota, Create_Date, Update_Date

) 
select p.Project_Id, p.Project_Name, p.Client_Name, p.List_Type, pt.Project_Start_Date, DATE(p.Created_Date), pt.Actual_Completion_Date, pt.Scheduled_Completion_Date, p.Created_By, CONCAT(ep.First_Name, ' ', ep.Last_Name), sp.Specialty_Name,pqd.Country,pqd.Quota, null, null from Project_Details p, Project_Tracker pt, Employee_Details ep, Specialty sp, Project_Quota_Details pqd where p.Project_Tracker_Id=pt.Project_Tracker_Id and p.Project_Id=pqd.Project_Id and pqd.Specialty_Id = sp.Specialty_Id
0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw