gpt4 book ai didi

MySQL - 多重连接的 1064 问题

转载 作者:行者123 更新时间:2023-11-29 08:33:17 24 4
gpt4 key购买 nike

以下是我所涉及的数据库表的简要摘要:

类(class)

  • 类(class) ID
  • 学校ID
  • 纪律 ID
  • 姓名

学校

  • 学校ID
  • 姓名

学科

  • 纪律 ID
  • 姓名

(表中还有其他列,但它们与问题并不真正相关)

我正在尝试选择所有类(class),其中 Courses.SchoolId = 给定的 SchoolId、Schools 中所述学校的名称、与每门类(class)关联的所有学科的名称,并按 Disciplines.Name 排序。如果这个摘要没有意义,也许我的查询会:

 $prep = $pdo->prepare('SELECT Courses.*, Disciplines.Name as Discipline, Schools.Name as School
FROM Courses
JOIN Courses AS C ON Courses.SchoolId = :schoolId
AND Schools ON Schools.SchoolId = :schoolId
AND Disciplines ON Disciplines.DisciplineId = Courses.DisciplineId
ORDER BY Disciplines.Name ASC');
$prep->bindParam(':schoolId', $schoolId, PDO::PARAM_INT);

if(!$prep->execute()){
print_r($pdo->ErrorInfo());
}

这是错误:

Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON Schools.SchoolId = '115773' AND Disciplines ON Disciplines.Disciplin' at line 4 in /Users/foremanjordan/Web Dev/Cleerly/src/scripts/addCourse.php on line 24

我一生都无法弄清楚这是为什么。我对使用 JOIN 还很陌生,所以我确信这与我的无知有关,但从我到目前为止的理解来看,这应该可行吗?

另外,作为一个附带问题,有人明白为什么我必须在第一条 JOIN 行中为 Courses 起别名吗?否则我会收到一个非唯一错误,但我不明白为什么。

谢谢!

最佳答案

使用指定关键字JOIN而不是AND

SELECT Courses.*, 
Disciplines.Name as Discipline,
Schools.Name as School
FROM Courses
INNER JOIN Schools
ON Courses.SchoolId = Schools.SchoolId
INNER JOIN Disciplines
ON Disciplines.DisciplineId = Courses.DisciplineId
WHERE Courses.SchoolId = :schoolId
ORDER BY Disciplines.Name ASC

排序时,使用ORDER BY而不是SORT

要进一步了解有关联接的更多知识,请访问以下链接:

关于MySQL - 多重连接的 1064 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962499/

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