我正在努力寻找如何对本地数据库中的一组表进行特定查询。
CREATE TABLE Gym (
eid INT PRIMARY KEY,
name VARCHAR(127) UNIQUE,
district VARCHAR(127),
area INT);
CREATE TABLE Trainer (
id INT PRIMARY KEY,
name VARCHAR(127),
birth_year INT,
year_credentials_expiry INT
);
CREATE TABLE Works (
eid INT,
id INT,
since INT,
FOREIGN KEY (eid) REFERENCES Gym (eid),
FOREIGN KEY (id) REFERENCES Trainer (id),
PRIMARY KEY (eid,id));
问题如下:我有几个健身房,有些情况下,两个或更多的健身房位于同一地区。我怎么知道,按地区划分,哪个健身房的教练较少?我唯一想得到的就是每家健身房的教练数量。考虑到这一点,我只能得到来自所有地区的最少教练的健身房...
注意:我不允许使用子查询(SELECT中的SELECT;SELECT中的FROM)
提前谢谢你。
发布于 2012-12-13 06:41:19
如果您可以在where
或having
子句中使用子查询,那么您可以这样处理它。
首先看一下您的查询,该查询按地区计算培训师的数量。
现在,编写一个查询(使用它作为子查询)来计算一个地区的健身房中的最小教练数量。
接下来,获取您的第一个查询,添加一个having子句,并按地区和训练器数量将其与第二个相关联。
这在子查询中使用子查询,但它在having
子句中。我不会为您编写查询,因为您需要学习如何自己编写查询。
顺便说一句,如果你有窗口/解析函数,可能还有其他的解决方案。
https://stackoverflow.com/questions/13849781
复制相似问题