簡體   English   中英

phpmyadmin中一列的總和為另一列的總和

[英]Sum of one column as another column in phpmyadmin

使用phpmyadmin我試圖使一個表“任務”中的一列“ PointsAwarded”的總和成為另一表“用戶”中另一列“ points”中的值。 每個用戶將獲得一項任務的積分,我希望能夠將他們獲得的總積分作為“用戶”表中的一列。 或以其他方式在我的php datagrid中顯示此數據。

new C_DataGrid("SELECT id, FirstName, LastName, Points FROM users", "id", 
"Ranking");

那是我正在使用的datagrid的格式,它是phpGrid格式。 非常感謝您的幫助,您需要詢問更多信息。

這是rank.php頁面

<?php
// use phpGrid\C_DataGrid;

include_once("../phpGrid/conf.php");
include_once('../inc/head.php');
?>

<h1><a href="../index.php">Staff Rank - Project Management System</a></h1>

<?php
$_GET['currentPage'] = 'ranking';
include_once('../inc/menu.php');
?>

<h3>Ranking</h3>

<?php
$dgRank = new C_DataGrid("SELECT id, FirstName, LastName, Points FROM 
users", "id", "Ranking");
$dgRank->set_col_hidden('id');
$dgRank-> set_sortname('id');
$dgRank->enable_edit();
$dgRank -> display();
?>

<?php
include_once('../inc/footer.php');
?>

數據庫結構/關系圖片集https://imgur.com/a/DGPkDPa

數據庫和應用程序相冊: https : //imgur.com/a/NKrDLLx

這純粹是數據庫設計問題。

考慮到這些Points是從另一個表計算出來的,因此您的用戶表上不應包含此列。 您可以刪除它。

點數應使用SQL計算。 有多種方法可以做到這一點,這是一個示例。

創建一個VIEW,根據其任務的PointsAwarded計算所有用戶的積分。 在phpmyadmin中啟動此查詢:

CREATE VIEW User_Points AS
SELECT  u.id, SUM(COALESCE(t.PointsAwarded,0)) AS Points 
FROM users 
LEFT JOIN tasks t ON u.id=t.EmployeeID
GROUP BY u.id

現在,您可以執行SELECT * FROM User_points ,這將返回以下內容:

id  Points
1   48
2   0
3   256
4   125

id是用戶的ID。

現在在PHP中,將查詢更改為:

SELECT u.id, u.FirstName, u.LastName, p.Points FROM users u INNER JOIN User_points p ON u.id=p.id

您所有的問題都將得到解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM