【发布时间】:2015-03-19 19:14:08
【问题描述】:
这是我的数据库关系:
节目(showID、标题、premiere_year、网络、创作者、类别)
剧集(节目ID、剧集ID、播出日期、标题)
- showID 是节目的外键
演员(actID,fname,lname)
main_cast(showID, actID, role)
- showID 是显示的外键 actID 是演员的外键
recurring_cast(showID, episodeID, actID, role)
showID 是节目的外键 episodeID 是剧集的外键
- actID 是演员的外键
客户(custID, fname, lname, email, creditcard,membersince,renewaldate, password, username)
cust_queue(custID, showID, datequeued)
- custID 是客户的外键 showID 是节目的外键
观看(custID、showID、episodeID、观看日期)
- custID 是客户的外键
- showID 是节目的外键
- (showID, episodeID) 是剧集的外键
- (custID, showID) 是 cust_queue 的外键
所有的“ID”都是主键
我收到了一些疑问,对于某些人来说,我不知道该怎么做。如:
对于每个客户(显示名字和姓氏),显示哪个节目和剧集是该客户观看的第一个节目。按客户姓氏对结果进行排序。
我正在尝试:
{
SELECT FIRST (Watched.datewatched)
FROM Watched
WHERE Watched.datewatched
IN
(SELECT Customer.fname, Customer.lname, Shows.title, Episode.title
FROM Customer, Shows, Episode, Watched
WHERE Shows.showid = Episode.showID AND Watched.custID = Customer.custID AND Watched.showID = Shows.showid
ORDER BY Watched.datewatched);
}
但我认为这是不对的。有任何想法吗??我想我不知道如何使用“FIRST”操作数。
【问题讨论】:
-
为什么这个标签是php?它还缺少正确的数据库标签 - oracle、sql-server 等。
-
没有第一个操作数!这就是你不知道如何使用它的原因。
-
那么如何让客户观看第一场演出?
-
使用分组依据。在 sql 中,你必须考虑集合而不是函数。