在MySQL中遇到SQL問題。不知道正確的是帶回所有獎我用戶已經贏得了......但只有獎最高AwardLevel他們已經贏了。關係如下:MySQL - 分組最大,內部加入 - 問題
A 用戶可以贏得很多AwardLevel(s)。每個AwardLevel都與一個稱爲獎的類別綁定。 獲獎等級有難度等級(1,2或3) 這與Stackoverflow的徽章類似,並通過銅牌,銀牌和金牌獎類型。
我正在嘗試爲用戶帶回所有獎項,但已過濾爲最大(難度)評級。例如,對於要達到3級(難度= 3)的用戶,他們首先必須獲得難度= 1,然後難度= 2.我不想用我的查詢顯示所有三個級別,只是最高(MAX)。我目前的查詢存在的問題是GROUP BY似乎搶到了它發現的第一個紀錄。有時不是難度= 3的人。不確定是否應該將MAX表達式放在查詢的其他地方。
更新的查詢:
SELECT a.*, MAX(awlev.difficulty)
FROM Award AS a
INNER JOIN AwardLevel AS awlev ON awlev.id = a.level_id
WHERE a.user_id = 3 -- just a sample user_id
GROUP BY awlev.category_id
表設置: - 注:我已經忘了與用戶 表 - 來贏得AwardLevels此表中設置我稱之爲UserAwardLevels
CREATE TABLE Users (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
fullname VARCHAR(100)
);
CREATE TABLE AwardLevels (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
levelname VARCHAR(100),
difficulty INT
);
CREATE TABLE Awards (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
awardname VARCHAR(100)
);
CREATE TABLE UserAwardLevels (
user_id INT,
awardlevel_id INT
);
CREATE TABLE AwardLevels (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
levelname VARCHAR(100),
difficulty INT
);
用戶可以贏得同一獎勵級別的多個獎項嗎? –
在您的查詢中,沒有包含「t」別名的表。請修復。 –
並不真正瞭解你的結構。 t.user_id中有什麼?你可以發表表格的結構嗎? – galchen