0

我需要编写一个查询,这对我来说有点复杂。基本思想是匹配来自不同表的几个字段,然后根据结果编辑另一个表。

涉及三个表:

时间表:sch_id, date, schedule, event_id

Link_Location_Schedules:id, loc_id, sch_id

Link_Location_Events:id, loc_id, event_id

现在我需要尝试做的是:

  1. 在“日程安排”中查找在今天日期之后设置的日程安排。
  2. 对于这些计划,从与计划事件 ID 相同的Link_Location_Events位置获取位置 ID 。event_ids
  3. 对于每个匹配的计划 ( sch_id) 和返回的位置 ( loc_id),检查该对是否已存在于 中Link_Location_Schedules,如果不存在则插入它们。

以下是我为上述所做的一些 SQL 查询,我只需要将它们组合起来:

  1. SELECT sch_id FROM 'Schedules' WHERE DATE_FORMAT(sports_schedule_insert_date_time, "%Y-%m-%d") >= '2012-11-14';

  2. SELECT loc_id from Link_Location_Events, Schedules WHERE Link_Location_Events.event_id = Schedules.event_id;

4

1 回答 1

0

听起来像是 select 语句中的简单插入...

insert into Link_Location_Schedules
   ( loc_id,
     sch_id )
select
      PreQuery.loc_id,
      PreQuery.sch_id
   from
      ( select
              s.sch_id,
              lle.loc_id
           from
              Schedules s
                 join Link_Location_Events lle
                    on s.event_id = lle.event_id ) PreQuery
      LEFT JOIN Link_Location_Schedules lls
         on PreQuery.loc_id = lls.loc_id
        and PreQuery.sch_id = lls.sch_id
   where
      lls.loc_id is null

最里面的预查询是获取所有可能的日程/位置 ID。从那里,左连接到那些找到的现有位置/时间表。然后,WHERE 子句将仅返回未找到匹配项的那些(因此 lls.loc_id 为空)。获取该结果并直接插入到计划/位置表中。

于 2012-11-14T13:03:48.300 回答