Php 显示某些MySQL表

Php 显示某些MySQL表,php,mysql,database,pdo,Php,Mysql,Database,Pdo,以下是我的PHP数据库结构: 我已经尝试了几个小时使用PDO实现一个JOIN SQL查询,但是失败了,所以我需要一些帮助 我需要一个PDO查询,该查询显示分配给学生也注册的班级id的所有“作业”(标题和说明) 如果你需要我更具体一些,请告诉我。谢谢 编辑 这是我做的一个查询,它显示了一个人所在的类 $sql = $db->prepare("SELECT enrollments.*, courses.*, students.* FROM enrollments LEFT JOIN cours

以下是我的PHP数据库结构:

我已经尝试了几个小时使用PDO实现一个JOIN SQL查询,但是失败了,所以我需要一些帮助

我需要一个PDO查询,该查询显示分配给学生也注册的班级id的所有“作业”(标题和说明)

如果你需要我更具体一些,请告诉我。谢谢

编辑

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

$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(“从注册中选择注册。*、课程。*、学生。*”
在注册时左键加入课程。课程\u id=课程.id
在students.id=registrations.student\u id上加入左侧学生
其中registrations.student_id=?
");
$sql->execute(数组($login_id));
而($row=$sql->fetch(PDO::fetch_ASSOC))
{
回声“
  • ”; }
    这里有一个相对简单的连接,可以实现我认为您想要的目标

    $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));
    
    我的思考过程是这样的:

  • 决定哪个是“主”表。你说“显示所有作业”,所以是“作业”
  • 那张桌子是FROM之后的第一张桌子
  • 知道我有一个特定的学生,找到“student_id”的最短路径,这对域逻辑有意义
  • 我看到“注册”有一个学生id,我的作业和注册有一个课程id;这就是我通往学生证的途径
  • 根据其与工作分配的关系中涉及的因素加入注册(当列与USING()同名时,SQL使之变得容易)

  • 与您的查询的差异(在我看来),是使用您的绝对目标实体作为原始FROM表,然后从那里加入。如果您想要分配,查询应该从分配中的
    开始,然后使用加入来拉入您需要使用的数据以限制结果。

    嘿,Alex-我对PDO不太熟悉,所以无论如何我都无法帮助您,但它是通常情况下,在没有提供您尝试过的示例的情况下寻求帮助是一种糟糕的形式。您所写的内容不仅很有可能已经接近有效,而且还证明您在这个问题上花费了时间。我用我所做的查询对其进行了更新,该查询显示了用户注册的课程,但无法让它显示每个学生的家庭作业class.YAY!一个不使用mysql且名声不好的人!这很有魅力。也感谢你的思考过程;它确实为我澄清了一些事情。你真的知道它来自哪个课程吗?我想展示class:Assign.titlesule东西…只需在课程中添加一个连接。这是一个很好的例子联接的替代语法(启用而不是使用)