Select 关于他在 SQL*Plus 中的预订的客户信息
Select client informations about his reservation in SQL*Plus
我想显示过去两个月没有任何预订的客户的姓名、地址和phone电话号码。
表格是:
CLIENT (
ClientNo,
Name,
Sex,
DOB,
Address,
Phone,
Email,
Occupation,
MaritalStatus,
Spouse,
Anniversary
)
RESERVATION
ResNo,
ResDate,
NoOfGuests,
StartDate,
EndDate,
ClientNo,
Status
)
我试过了:
SELECT Name, Address, Phone, ResNo
FROM Client C, Reservation R
WHERE Date_Column >= ResDate R(MONTH, -3, GETDATE())
ORDER BY Name DESC
尽量让你的 where 条件像
ResDate >= add_months(TRUNC(SYSDATE) + 1, 2)
您还缺少 table 的 JOIN。所以你需要把 JOIN 放在
SELECT C.Name, C.Address, C.Phone, R.ResNo, R.ResDate
FROM Client C INNER JOIN Reservation R ON C.ID = R.ID --Change the column for Joing as per your table structure
WHERE R.ResDate >= add_months(TRUNC(SYSDATE) + 1, 2))
ORDER BY Name ASC;
你需要一个outer join,所有的条件都在join里面,然后过滤掉所有成功的join:
SELECT C.*
FROM Client C
LEFT JOIN Reservation R ON C.ID = R.ID -- outer join
AND R.ResDate >= add_months(TRUNC(SYSDATE) + 1, 2) -- condition in join
WHERE R.ID IS NULL -- only return missed joins
ORDER BY Name ASC
您想要错过的加入 - 在给定条件的情况下根本没有保留的加入。这种错过的连接在连接的 table 的列中具有全空值,因此过滤这些列(其中之一)为空将 return 没有任何此类保留的客户。
我想显示过去两个月没有任何预订的客户的姓名、地址和phone电话号码。
表格是:
CLIENT (
ClientNo,
Name,
Sex,
DOB,
Address,
Phone,
Email,
Occupation,
MaritalStatus,
Spouse,
Anniversary
)
RESERVATION
ResNo,
ResDate,
NoOfGuests,
StartDate,
EndDate,
ClientNo,
Status
)
我试过了:
SELECT Name, Address, Phone, ResNo
FROM Client C, Reservation R
WHERE Date_Column >= ResDate R(MONTH, -3, GETDATE())
ORDER BY Name DESC
尽量让你的 where 条件像
ResDate >= add_months(TRUNC(SYSDATE) + 1, 2)
您还缺少 table 的 JOIN。所以你需要把 JOIN 放在
SELECT C.Name, C.Address, C.Phone, R.ResNo, R.ResDate
FROM Client C INNER JOIN Reservation R ON C.ID = R.ID --Change the column for Joing as per your table structure
WHERE R.ResDate >= add_months(TRUNC(SYSDATE) + 1, 2))
ORDER BY Name ASC;
你需要一个outer join,所有的条件都在join里面,然后过滤掉所有成功的join:
SELECT C.*
FROM Client C
LEFT JOIN Reservation R ON C.ID = R.ID -- outer join
AND R.ResDate >= add_months(TRUNC(SYSDATE) + 1, 2) -- condition in join
WHERE R.ID IS NULL -- only return missed joins
ORDER BY Name ASC
您想要错过的加入 - 在给定条件的情况下根本没有保留的加入。这种错过的连接在连接的 table 的列中具有全空值,因此过滤这些列(其中之一)为空将 return 没有任何此类保留的客户。