SQL数据库-第一个操作数
以下是我的数据库关系: 节目(showID、标题、首映年份、网络、创作者、类别) 插曲(showID,eposodeid,airdate,title)SQL数据库-第一个操作数,sql,database,Sql,Database,以下是我的数据库关系: 节目(showID、标题、首映年份、网络、创作者、类别) 插曲(showID,eposodeid,airdate,title) showID是显示的外键 参与者(actID、fname、lname) 主要演员阵容(showID、actID、role) showID是shows actID的外键,actID是actor的外键 循环演员阵容(showID、eposodeid、actID、role) showID是shows eposodeid的外键,它是eposide
- showID是显示的外键
- showID是shows actID的外键,actID是actor的外键
- actID是actor的外键
- custID是客户showID的外键
- custID是客户的外键
- showID是显示的外键
- (showID,eposodeid)是该集的外键
- (custID,showID)是cust_队列的外键
{
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”操作数。因为您没有给出平台,所以我将使用适用于大多数(所有)SQL平台的代码: 下面是如何解决这样一个问题的步骤。首先,我们想知道用户观看的第一个节目和插曲 查找用户观看的第一个节目
select custID, showID, min(datewatched)
from watched
group by custID, showID
现在开始该节目的第一集
select firstshow.custID, firstshow.showID, firstshow.datewatched, minDW, mineID
from (
select custID, showID, min(datewatched) as minDW
from watched
group by custID, showID
) as firstshow
join
(
select custID, showID, datewatched, min(episodeID) as mineID
from watched
group by custID, showID, datewatched
) as firstepisode on firstshow.custID = firstepisode.custID
and firstshow.showID = firstepisode.showID
and firstshow.minDW = firstepisode.datewatched
现在返回以获取用户名和显示名称
select customer.fname, customer.lname, shows.Title as show, mineID as EpisodeNum
from (
select custID, showID, min(datewatched) as minDW
from watched
group by custID, showID
) as firstshow
join
(
select custID, showID, datewatched, min(episodeID) as mineID
from watched
group by custID, showID, datewatched
) as firstepisode on firstshow.custID = firstepisode.custID
and firstshow.showID = firstepisode.showID
and firstshow.minDW = firstepisode.datewatched
join customer on firstshow.custID = customer.custID
join shows on firstshow.showID = shows.showID
order by customer.lname
即使是像这样复杂的事情,如果你循序渐进,也会变得简单。为什么这个标签是php?而且它缺少正确的数据库标记-oracle、sql server等。没有第一个操作数!这就是为什么你不知道如何使用它。那么我如何让客户观看第一个节目呢?使用分组。在sql中,您必须将集合看作函数。这有助于您理解代码的第二部分,“firstshow”从何而来?firstshow是答案第一部分中解释的子查询的别名。您可以将其视为使用select语句定义表。@BrettSaguid-除非您使用的是db2、oracle或sql server,并且可以使用
OVER()
语句,否则必须使用子查询来解决此问题。不过,如果你能使用的话,这是非常简单的。对不起,我对SQL非常陌生,但是你在哪里定义代码的第一部分为“firstshow”?()中的内容-你应该阅读SQL基础知识,我不能在注释中教你SQL