Сумма одного столбца как другого столбца в phpmyadmin

Используя phpmyadmin, я пытаюсь сделать сумму одного столбца «PointsAwarded» в одной таблице «tasks» значениями в другом столбце «points» в другой таблице «users». Каждый пользователь получит баллы за задание, я хочу, чтобы сумма полученных им баллов была столбцом в таблице «user». Или альтернативный способ показать эти данные в моем php datagrid.

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

это формат таблицы данных, которую я использую, это формат phpGrid. Любая помощь высоко ценится, и любую дополнительную информацию вам нужно просто спросить.

Вот страница rating.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

0

Решение

Это чисто вопрос проектирования базы данных.

Учитывая, что Points вычисляются из другой таблицы, вы не должны иметь этот столбец в вашей пользовательской таблице. Вы можете УБРАТЬ это.

Точки должны быть вычислены в SQL. Есть несколько способов сделать это, и вот пример.

Создайте ВИД, который вычисляет баллы для всех пользователей, основываясь на Баллах, начисленных за их задачи.
Запустите этот запрос в 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 является идентификатором пользователя.

Теперь в PHP измените ваш запрос на это:

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

и все ваши проблемы будут решены

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]