我正在为健身房(私人教练型组织)编写申请。我需要写一个查询,我需要帮助。
运动员(表:运动员)购买时间块(表:程序)。他们通过约会利用这段时间(表:用法),
我需要写的查询:向我展示运动员没有的独特(唯一,即每一个记录)运动员(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。
任何帮助表示感谢。
答案 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())
)
子查询选择过去两周内触摸过的所有运动员的程序。这些被排除在运动员和项目的加入之外。