使用特定的 select 列表插入 SQL

Inserting in SQL with specific select list

您好,我正在尝试插入一个看起来与此类似的行 table

要插入 table 我使用此代码

Insert Into Fixture_Data (Fixture_NAME, Date_Logged,  Calendar_Week, Calendar_Year)

    Select ACTIVE_FIXTURES.Fixture_NAME,
   Fixture_Rows_For_Year.Start_Date as Date_Logged,
   
   Fixture_Rows_For_Year.Calendar_Week,
   Fixture_Rows_For_Year.Calendar_Year    

From ACTIVE_FIXTURES

Cross Join Fixture_Rows_For_Year;

但是,当我想专门为一个夹具名称插入一行时,出现错误。我要插入的灯具名称来自另一个 table,我在其中保留了所有活动灯具的列表,但我收到 SQL 命令未正确结束或并非所有变量都正确绑定错误 取决于我把 where 语句放在哪里。这是错误代码:

Insert Into Fixture_Data (Fixture_NAME, Date_Logged,  Calendar_Week, Calendar_Year)

    Select ACTIVE_FIXTURES.Fixture_NAME,
   Fixture_Rows_For_Year.Start_Date as Date_Logged,
   
   Fixture_Rows_For_Year.Calendar_Week,
   Fixture_Rows_For_Year.Calendar_Year    

From ACTIVE_FIXTURES
Cross Join Fixture_Rows_For_Year
where Fixture_Name =: P6_NEW;

非常感谢任何帮助。

P6_NEW 是第 6 页上的一个项目(您可以将其命名为 smarter,“new”不是很好描述)。

当您引用页面项目时,您可以在它们的名称前加上冒号 (:)。这恰恰意味着 - 在项目名称 之前。中间没有空格。

No :     where   Fixture_Name =: P6_NEW

Yes:     where a.fixture_name = :P6_NEW
                              ----
                         note the difference

此外,习惯使用table别名;它们使代码更易于阅读。

insert into fixture_data 
  (fixture_name, 
   date_logged,  
   calendar_week, 
   calendar_year)
select a.fixture_name,
       f.start_date as date_logged,
       f.calendar_week,
       f.calendar_year    
from active_fixtures a cross join fixture_rows_for_year f
where a.fixture_name = :P6_NEW;