Item - Id,Name,
PurchaseLog - Id,ItemId,CustomerId,PurchaseDate User - Id,UserName
对于给定的两个客户的用户名,找到他们去年购买的普通商品的名称.
这是天真的(甚至是正确的)?:
select distinct item.id, item.name
from item i, PurchaseLog log_username1, PurchaseLog log_username2, user user1, user user2
where lower(user1.username) = lower('UserName1') AND
lower(user2.username) = lower('UserName2') AND
log_username1.itemid = log_username2.itemid AND
log_username2.itemid = i.itemid AND
log_username1 >-- satisfy date contraint AND
log_username2 >-- satisfy date contraint
Run Code Online (Sandbox Code Playgroud)
您描述了交叉点查询的基本要求.
select item.id, item.name
from item, PurchaseLog p, user u
where lower(u.username) = lower('Username1')
AND p.user_id = u.user_id
and item.id = p.itemid
and p.purchasedate between SYSDATE and SYSDATE-365
INTERSECT
select item.id, item.name
from item, PurchaseLog p, user u
where lower(u.username) = lower('Username2')
AND p.user_id = u.user_id
and item.id = p.itemid
and p.purchasedate between SYSDATE and SYSDATE-365
Run Code Online (Sandbox Code Playgroud)
这将返回为两个用户显示的item.id和item.name列表.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |