1

ローカルデータベースにある一連のテーブルに対して特定のクエリを実行する方法を見つけるのに苦労しています。

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));

質問は次のとおりです。私はいくつかのジムを持っていますが、2つ以上のジムが同じ地区にある場合があります。トレーナーが少ないジムを地区別に知るにはどうすればよいですか?私が何とか手に入れたのは、ジムごとのトレーナーの数だけです。それを考えると、私はすべての地区から最小限のトレーナーでしかジムを得ることができません...

注:サブクエリを使用することは許可されていません(SELECT内のSELECT、FROM内のSELECT)

前もって感謝します。

4

1 に答える 1

0

whereor句句でサブクエリを使用できる場合はhaving、この方法でアプローチできます。

最初に、地区ごとのトレーナーの数をカウントするクエリを見てください。

次に、地区内のジムのトレーナーの最小数を計算するクエリを (サブクエリとして使用して) 記述します。

次に、最初のクエリを取得し、having 句を追加して、地区とトレーナーの数によって 2 番目のクエリに関連付けます。

これはサブクエリでサブクエリを使用しますが、having句内にあります。あなたは自分でそれを行う方法を学ぶ必要があるので、私はあなたのためにクエリを書いていません.

ちなみに、ウィンドウ/分析関数がある場合は、他の解決策があるかもしれません。

于 2012-12-12T22:41:19.267 に答える