如何显示数据库中单行中每个“赞”的数字值?
例如:
来自数据库的图像将在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/