Delphi - SQL - 确定何时在一个时间范围内没有更新多个详细记录

时间:2013-09-29 17:48:09

标签: sql delphi master-detail

我正在为健身房(私人教练型组织)编写申请。我需要写一个查询,我需要帮助。

运动员(表:运动员)购买时间块(表:程序)。他们通过约会利用这段时间(表:用法),

我需要写的查询:向我展示运动员没有的独特(唯一,即每一个记录)运动员(I,e,名字和姓氏)是ACTIVE(运动员表中的布尔字段)在过去的两周里,“他”触及了他的节目。

Structures:

ATHLETE Table
ID : Primary Key
ACTIVE:  Boolean Field
First Name
Last Name

PROGRAMS Table
PROGRAM_ID : Primary Key
ATHLETE_ID : Foreign Key
DATE_PURCHASED:  Date the program was purchased

USAGE Table
USAGE_ID : Primary Key
PROGRAM ID: Foreign Key to PROGRAMS table
ATHLETE_ID: Foreign Key to ATHLETE Table.
CREATED_DATE:  The date they created the appointment
SCHEDULED_DATE: The Time of the appointment
CHECKIN_IN: When they actually showed up

我的SQL语法是SQL92,支持CASE语句。所以,我需要看到两种不同类型的数据。 (1)运动员至少在两周前购买了一项计划,并且没有采取任何措施(即运动员有计划,但没有分配给该计划,以及(2)运动员有一个或多个计划的运动员用法,但两周前没有任何使用时间更近,或者是最近两个星期几的SCHEDULED_DATE。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

这样的事情:

select distinct First, Last
from   ATHLETE A
join   PROGRAMS P
on     P.ATHLETE_ID = A.ID
where  A.ACTIVE = 1
and    P.PROGRAM_ID not in (select PROGRAM_ID
                            from   USAGE
                            where  ATHLETE_ID     = A.ID
                            and    CREATED_DATE   >= dateadd(dd, -14, getdate())
                            or     SCHEDULED_DATE >= dateadd(dd, -14, getdate())
                           )

子查询选择过去两周内触摸过的所有运动员的程序。这些被排除在运动员和项目的加入之外。