gpt4 book ai didi

php - 显示某些 MySQL 表

转载 作者:行者123 更新时间:2023-11-29 08:48:21 25 4
gpt4 key购买 nike

这是我的 PHP 数据库结构:http://pastebin.com/x89AdzfS

我已经尝试了几个小时来使用 PDO 进行 JOIN SQL 查询,但失败了,所以我在这里需要一些帮助。

我需要一个 PDO 查询来显示分配给学生也注册的类(class) ID 的所有“作业”(标题和说明)。

如果您需要我说得更具体,请告诉我。谢谢!

编辑

这是我所做的一个查询,它显示一个人所在的类(class)

$sql = $db->prepare("SELECT enrollments.*, courses.*, students.* FROM enrollments
LEFT JOIN courses ON enrollments.course_id = courses.id
LEFT JOIN students ON students.id = enrollments.student_id
WHERE enrollments.student_id = ?
");
$sql->execute(array($login_id));

while($row = $sql->fetch(PDO::FETCH_ASSOC))
{
echo "<li><a href='class.php?id=".$row['course_id']."'><i class='icon-book'></i>".$row['name']."</a></li>";
}

最佳答案

这是一个相对简单的连接来完成我认为你想要的事情。

$sql = $db->prepare("SELECT 
title,
description,
courses.name
FROM assignments
JOIN courses ON courses.id = assignments.course_id
JOIN enrollments USING(course_id)
WHERE enrollments.student_id = ?");

$sql->execute(array($login_id));

我的查询思考过程是这样的:

  1. 决定哪个是“主”表。你说“显示所有作业”,所以它是“作业”
  2. 该表是 FROM 之后的第一个表
  3. 知道我有某个学生,找到对领域逻辑有意义的“student_id”的最短路径
  4. 我看到“enrollments”有一个 Student_id,并且我的作业注册有一个 course_id;这就是我的student_id 路径
  5. JOIN 登记涉及与分配的关系的因素(当列与 USING() 具有相同名称时,SQL 会变得很容易

与您的查询的区别(据我所知)是使用您的绝对目标实体作为原始 FROM 表,然后从那里加入。如果您需要分配,查询应以 FROM分配 开头,然后使用联接来提取需要用于限制结果的数据。

关于php - 显示某些 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com