Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 排名的不同逻辑_Php_Mysql_Logic - Fatal编程技术网

Php 排名的不同逻辑

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

我必须为我的排名方案找到一个解决方案

假设数据库中有100个用户。另一张桌子上有5个主题。在我的项目中,用户可以选择对任何主题进行1到5次评分。意味着一个用户应该对5个不同的主题有5个不同的评分。我需要把鞋子放在首页,这是登录页上评级最高的主题

我有一个像创建一个表这样的计划

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