Pour fusionner les données en une seule réponse et renvoyer le résultat attendu, utilisez l'approche suivante :
<code class="sql">SELECT subjects.userid, users.name AS username, ( SELECT id FROM tbsubjects WHERE userid = subjects.userid ORDER BY id ASC LIMIT 1 ) AS subjectsid, ( SELECT name FROM tbsubjects WHERE userid = subjects.userid ORDER BY time DESC LIMIT 1 ) AS subjectname, ( SELECT IFNULL(SUM(points), 0) FROM tbsubjects WHERE userid = subjects.userid AND month = DATE_FORMAT(NOW(), "%c") ) AS activepts, IFNULL(SUM(subjects.points), 0) AS totalpts, ( SELECT IFNULL(SUM(points), 0) FROM tbsubjects WHERE userid = subjects.userid AND semester = 1 ) AS sem1, ( SELECT IFNULL(SUM(points), 0) FROM tbsubjects WHERE userid = subjects.userid AND semester = 2 ) AS sem2, ( SELECT IFNULL(SUM(points), 0) FROM tbsubjects WHERE userid = subjects.userid AND semester = 3 ) AS sem3 FROM tbsubjects AS subjects LEFT JOIN tbusers AS users ON users.id = subjects.userid WHERE subjects.userid = :userid1 GROUP BY subjects.userid ORDER BY subjects.time DESC;</code>
Si la liste des utilisateurs est vide, renvoyer un message d'erreur au format JSON :
<code class="php">$response->getBody()->write( '{ "error": { "message":"Invalid" } }' );</code>
Sinon, renvoyez la liste des utilisateurs encodée en JSON.
En supposant que votre table de sujets ait la même structure que dans votre description initiale, vous pouvez utiliser le script suivant pour récupérer et formater les données requises :
<code class="php"><?php $userid1 = 1; // Replace this with the actual user ID // SQL statement $sql = 'SELECT ... FROM ... WHERE subjects.userid = :userid1 GROUP BY ... ORDER BY ...'; // Bindings $bindings = array( ':userid1' => $userid1 ); // Fetch users $users = $dbAdapter->fetchAll($sql, $bindings); // Handle results if (empty($users)) { // Handle empty users list } else { // Handle users list }</code>
Le script suppose que vous disposez d'une classe DbAdapter qui fournit des méthodes pour les interactions avec la base de données. Cette classe doit gérer l'établissement de la connexion, la préparation des instructions et la récupération des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!