【发布时间】:2013-12-03 21:22:49
【问题描述】:
我有一个包含这四个表的数据库:
CREATE TABLE team (
id CHAR(3),
name VARCHAR2(80) CONSTRAINT nn_team_name NOT NULL,
district VARCHAR2(20) CONSTRAINT nn_team_district NOT NULL,
CONSTRAINT pk_team
PRIMARY KEY (id)
);
CREATE TABLE game (
home,
away,
round NUMBER(2) CONSTRAINT nn_game_round NOT NULL,
spectators NUMBER(5),
--
CONSTRAINT pk_game
PRIMARY KEY (home, away),
--
CONSTRAINT fk_game_home
FOREIGN KEY (home)
REFERENCES team(id),
CONSTRAINT fk_game_away
FOREIGN KEY (away)
REFERENCES team(id),
--
CONSTRAINT ck_game_round
CHECK (round BETWEEN 1 AND 30),
CONSTRAINT ck_game_spectators
CHECK (spectators > 0)
);
CREATE TABLE player (
nickname NUMBER(8),
name VARCHAR2(80) CONSTRAINT nn_player_name NOT NULL,
yearOfBirth NUMBER(4) CONSTRAINT nn_player_yearOfBirth NOT NULL,
team CONSTRAINT nn_player_team NOT NULL,
--
CONSTRAINT pk_player
PRIMARY KEY (nickname),
--
CONSTRAINT fk_player_team
FOREIGN KEY (team)
REFERENCES team(id),
--
CONSTRAINT ck_player_yearOfBirth
CHECK (yearOfBirth BETWEEN 1950 AND 2000)
);
CREATE TABLE plays (
player,
home,
away,
goals NUMBER(2) CONSTRAINT nn_plays_goals NOT NULL,
--
CONSTRAINT pk_plays
PRIMARY KEY (player, home, away),
--
CONSTRAINT fk_plays_player
FOREIGN KEY (player) REFERENCES player(nickname),
CONSTRAINT fk_plays_game
FOREIGN KEY (home, away) REFERENCES game(home, away),
--
CONSTRAINT ck_plays_goals
CHECK (goals >= 0)
);
我在处理这四个查询时遇到了问题:
- 每场比赛每轮的平均进球数。结果应按整数排序。
- 在不到五场比赛中客场比赛的球员的姓名和昵称,以及他们的球队 ID。结果应该包括没有参加任何比赛的球员。必须只有一个 SELECT 子句。
- 每轮进球数较多的球队的 ID。如果有不止一支球队的进球数较多,则两支球队都应显示在结果中。假设球队在每一轮比赛。
- 他们俱乐部的昵称和身份证,用于在两场比赛中进球最多的球员,并且只有两场比赛。如果在这种情况下有多个玩家,则不会显示任何人。
你们能帮帮我吗?因为我已经设法进行了更简单的查询,但我被困在了这个...
【问题讨论】:
-
SQL*PLUS 是 oracle 的东西,而不是 MySQL 的东西。
-
@OllieJones 抱歉,我已经更新了!
-
你有测试数据吗?可以发SQLFIDDLE吗?