0

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

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

我需要编写的查询:向我显示不同的(唯一的,即每个记录只有一条)运动员(I,e,名字和姓氏)是 ACTIVE(Athletes 表中的布尔字段),其中 Athlete 没有“在过去的两周里触及了他的计划。

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) 有一个或多个项目的运动员用法,但没有比两周前更近的 CREATED_DATE 或 SCHEDULED_DATE 的用法。

任何帮助表示赞赏。

4

1 回答 1

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())
                           )

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

于 2013-09-29T20:14:11.600 回答