如何显示数据库中单行中每个“赞”的数字值?

例如:

来自数据库的图像将在php页面中给出结果,该页面可以
从数据库行中的每个“喜欢”和“中性”给出一个数值

Like = 1 Neutral = 2

最佳答案

首先,重新设计您的桌子。我会为您做的,但是为了将来的工作,您应该真正查一下normalisation

而不是每个用户响应都单独显示一行,而是每个答案都具有一行显示,并附加一个ID来标识它属于谁(您没有在示例中显示此内容,但我会假定它确实存在于您的行)。

+----+------+------------+------------------+
| Id | User | QuestionID | QuestionResponse |
+----+------+------------+------------------+
|  1 |   45 |          1 | Like             |
|  2 |   45 |          2 | Neutral          |
|  3 |   45 |          3 | Like             |
|  4 |   46 |          1 | Dislike          |
|  5 |   46 |          2 | Dislike          |
+----+------+------------+------------------+


使用这样的结构,您可以轻松进行计数

例如:

SELECT COUNT(QuestionResponse) FROM QuestionTable WHERE QuetstionResponse = 'Like'


如果需要特定用户,请在最后添加AND UserID = 46

现在,该表使用规范化-用户详细信息存储在另一个表中,因为数据复制是baaaaad。您不希望或不需要在每行中添加个人详细信息,因为它已经存在于其他位置。我们可以通过联接访问该数据。假设用户表如下所示:

+----+----------+-----------+----------+
| Id | Username | FirstName | LastName |
+----+----------+-----------+----------+
| 45 | Fbloggs  | Fred      | Bloggs   |
| 46 | Charray  | Charlotte | Harray   |
| 47 | Tmoseby  | Ted       | Moseby   |
| 48 | Dknute   | Deunan    | Knute    |
+----+----------+-----------+----------+


您可以通过联接访问用户信息。

SELECT Users.Username, Count(QuestionResponse) FROM table
INNER JOIN Users ON QuestionTable.User = Users.Id
WHERE QuestionResponse = 'Like'


这将输出

+----------+-------+
| Username | Count |
+----------+-------+
| Fbloggs  |     2 |
+----------+-------+

关于php - 如何计算数据库中单行内的喜欢和中立的次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43425656/

10-09 23:30
查看更多