首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示符合子记录条件的父记录。

显示符合子记录条件的父记录。
EN

Stack Overflow用户
提问于 2019-09-09 18:55:05
回答 2查看 28关注 0票数 0

在oracle sql中,假设我有一个游戏开发人员表和一个游戏商店销售的产品表。想象一下,我试图只选择游戏开发人员,在游戏商店的产品总数量少于10。

因此,我会称这些表为“开发者”和“游戏”。开发人员包含一个DEV_ID的PK,它将作为游戏中GAME_DEV的FK。

代码语言:javascript
运行
复制
CREATE TABLE Developers (
DEV_ID varchar(5) NOT NULL PRIMARY KEY,
DEV_NAME varchar(20) NOT NULL);

CREATE TABLE Games (
GAME_ID varchar(5) NOT NULL PRIMARY KEY
GAME_NAME varchar(20) NOT NULL,
GAME_PRICE varcher(10) NOT NULL,
GAME_DEV varchar(5) NOT NULL,
CONSTRAINT game_fk FOREIGN KEY (GAME_DEV)
REFERENCES Developers(DEV_ID));

我尝试过创建一个视图,然后尝试只从条目数量小于10的视图中选择DEV_ID。

代码语言:javascript
运行
复制
CREATE OR REPLACE VIEW games_developers AS
SELECT * FROM Games g
INNER JOIN Developer d
ON g.GAME_DEV = d.DEV_ID;

SELECT DEV_ID FROM games_developers
WHERE COUNT(DEV_NAME) < 10;

现在,我收到了错误消息:“这里不允许组函数”,对于我如何能够拉出一个在商店中只有不到10的可用游戏数量的开发人员列表,我有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-09 18:57:41

一种方法是:

代码语言:javascript
运行
复制
SELECT d.*
FROM Developer d
WHERE d.DEV_ID IN (SELECT g.GAME_DEV
                   FROM Games g
                   GROUP BY g.GAME_DEV
                   HAVING COUNT(*) < 10
                  );

然而,这将错过没有游戏在商店的开发人员。所以:

代码语言:javascript
运行
复制
SELECT d.*
FROM Developer d
WHERE d.DEV_ID NOT IN (SELECT g.GAME_DEV
                       FROM Games g
                       GROUP BY g.GAME_DEV
                       HAVING COUNT(*) >= 10
                      );
票数 1
EN

Stack Overflow用户

发布于 2019-09-09 19:26:38

另一种选择,可能更清楚,也可能不会更清楚

代码语言:javascript
运行
复制
select d.dev_id, d.dev_name, count(*) num_games
  from developer d
       left outer join games g
         on( d.dev_id = g.game_dev )
 group by d.dev_id, d.dev_name
having count(*) < 10

如果您将视图改为执行left outer join,则只需

代码语言:javascript
运行
复制
select d.dev_id, d.dev_name, count(*) num_games
  from games_developers d /* If the view does an outer join */ 
 group by d.dev_id, d.dev_name
having count(*) < 10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57859751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档