我無法設法查詢問題。我有三個表SQL Query - count - max
CREATE TABLE institute (
iid INT PRIMARY KEY,
sign VARCHAR(127) UNIQUE,
city VARCHAR(127) NOT NULL,
area INT CHECK (area>0));
CREATE TABLE desease (
did INT PRIMARY KEY,
name VARCHAR(127) UNIQUE,
level INT CHECK (level>0));
CREATE TABLE studies (
did INT,
iid INT,
FOREIGN KEY (did) REFERENCES desease (did),
FOREIGN KEY (iid) REFERENCES institute (iid),
PRIMARY KEY (iid,did));
我的問題是:由單位從里斯本數量最多哪些deseases的名稱(里斯本beeng的city
從institute
)。這是我想出來的,但它沒有給我正確的答案。
SELECT DISTINCT D.name, MAX(I.iid)
FROM desease D, studies S
JOIN institute I ON (S.iid = I.iid)
WHERE I.city = 'Lisboa' AND D.did = S.did
GROUP BY D.nome
HAVING COUNT(I.iid) = MAX(I.city)
作爲一個例子:假設5個院所人與城市= '里斯本' 並與IID A,B,C,d,E respectevely(只是爲了演示的目的,我知道類型是INT); 5分類名稱= Z,X,N,V,M的疾病。現在讓我們說研究Z,X和M由研究機構A,B,C(以任何順序)進行研究,研究N由D研究(1個),研究V由E研究(只有一個)。因此,通過任何里斯本學院學習deseases的最大數量爲3(A,B和C都學習3個deseases),使表看起來像這樣
Z - 3
X - 3
M - 3
編輯:我設法找到一種方法來做到這一點。這裏是我想出的查詢
SELECT DISTINCT D.name, COUNT(*) AS C
FROM desease D, studies E, institute I
WHERE I.iid = E.iid AND D.did = E.did AND I.city = "Lisboa"
GROUP BY D.name
HAVING C >= ALL (
SELECT COUNT(*)
FROM desease D, studies E, institute I
WHERE I.iid = E.iid AND D.did = E.did AND I.cidade = "Lisboa"
GROUP BY D.name
);
OMG,你需要告訴怎麼做,我因子評分我將不得不這樣做,但我沒有找到在哪裏做 –
http://meta.stackexchange.com/q/5 234/156331 – hochl
請更改您的問題。我不明白你需要什麼。 –