Php 排名的不同逻辑
我必须为我的排名方案找到一个解决方案 假设数据库中有100个用户。另一张桌子上有5个主题。在我的项目中,用户可以选择对任何主题进行1到5次评分。意味着一个用户应该对5个不同的主题有5个不同的评分。我需要把鞋子放在首页,这是登录页上评级最高的主题 我有一个像创建一个表这样的计划Php 排名的不同逻辑,php,mysql,logic,Php,Mysql,Logic,我必须为我的排名方案找到一个解决方案 假设数据库中有100个用户。另一张桌子上有5个主题。在我的项目中,用户可以选择对任何主题进行1到5次评分。意味着一个用户应该对5个不同的主题有5个不同的评分。我需要把鞋子放在首页,这是登录页上评级最高的主题 我有一个像创建一个表这样的计划 table name: user_subject_rate Structure id: user_id: subject1: subject2: subject3: subject4: subject5 1
table name: user_subject_rate
Structure
id: user_id: subject1: subject2: subject3: subject4: subject5
1 1 3 1 2 5 4
当我创建这样一个表时,如果一个新的主题出现在rate上会发生什么
有人能给我一个解决这个问题的建议吗?我使用mysql作为数据库。我建议您按如下方式构造表 用户
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
主题
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
用户\科目\分数
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
然后,您可以使用此查询计算每个科目的总分:
SELECT
name,
COALESCE(SUM(score), 0) AS total_score
FROM
subjects
LEFT JOIN
users_subjects_scores USING (subject_id)
GROUP BY
subject_id
ORDER BY
SUM(score) DESC
然后添加一个新主题就像向subjects
表中添加一个新行一样简单
您可以看到一个。我建议您按如下方式组织表格 用户
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
主题
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
用户\科目\分数
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
然后,您可以使用此查询计算每个科目的总分:
SELECT
name,
COALESCE(SUM(score), 0) AS total_score
FROM
subjects
LEFT JOIN
users_subjects_scores USING (subject_id)
GROUP BY
subject_id
ORDER BY
SUM(score) DESC
然后添加一个新主题就像向subjects
表中添加一个新行一样简单
您可以看到一个。我建议您按如下方式组织表格 用户
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
主题
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
用户\科目\分数
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
然后,您可以使用此查询计算每个科目的总分:
SELECT
name,
COALESCE(SUM(score), 0) AS total_score
FROM
subjects
LEFT JOIN
users_subjects_scores USING (subject_id)
GROUP BY
subject_id
ORDER BY
SUM(score) DESC
然后添加一个新主题就像向subjects
表中添加一个新行一样简单
您可以看到一个。我建议您按如下方式组织表格 用户
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
主题
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
用户\科目\分数
user_id | name
-----------------
1 Michael
2 Andrew
3 Annie
subject_id | name
----------------------
1 Maths
2 English
3 Physics
4 Chemistry
5 Biology
user_id | subject_id | score
----------------------------
1 1 5
1 2 5
1 3 4
1 4 2
1 5 3
2 1 1
2 2 2
2 3 4
2 4 5
2 5 3
然后,您可以使用此查询计算每个科目的总分:
SELECT
name,
COALESCE(SUM(score), 0) AS total_score
FROM
subjects
LEFT JOIN
users_subjects_scores USING (subject_id)
GROUP BY
subject_id
ORDER BY
SUM(score) DESC
然后添加一个新主题就像向subjects
表中添加一个新行一样简单
您可以看到一个。1。见规范化。见规范化。见规范化。看,我忘了基本关系。现在我明白了。谢谢MichaelRushtonOh我忘了基本关系。现在我明白了。谢谢MichaelRushtonOh我忘了基本关系。现在我明白了。谢谢MichaelRushtonOh我忘了基本关系。现在我明白了。谢谢MichaelRushton