1 つの応答で複数の応答データを返す
PHP コードには、データベース テーブルから複数行のデータをフェッチするクエリがあります。 。ただし、複数の応答を取得しており、それらを複数のレコードを含む 1 つの応答にマージしたいと考えています。
これを実現するには、必要なテーブルで左結合を実行するようにクエリを変更する必要があります。学生データを取得する代わりに、科目データを取得し、左結合を使用して関連する学生情報を含めます。これにより、複数のテーブルの関連データを 1 つの応答に含めることができます。
更新されたクエリの例を次に示します:
<code class="php">$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 = :userid GROUP BY subjects.userid ORDER BY subjects.time DESC';</code>
このクエリ内:
このクエリを実行すると、複数の件名を含む 1 つの応答が返されます。それぞれのレコードには、必要な生徒情報と計算された値が含まれています。
以上が単一の MySQL クエリで複数のレコードとその関連データをフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。