Php 连接多个表的MYSQL查询

Php 连接多个表的MYSQL查询,php,mysql,sql,Php,Mysql,Sql,我正在寻找一个可以连接多个表的查询。 查询如下 ` ` 上面的查询产生了错误,当我连接两个表时,它的显示是正确的 SELECT a.name as module_name, a.id, b.id as subject_id, b.SUBJECT_name FROM module_table a LEFT JOIN subject_table b ON b.id = a.subject_id WHERE a.id = $somevalue ORDER BY a.id DESC` 第一个表包含科目

我正在寻找一个可以连接多个表的查询。 查询如下 `

`

上面的查询产生了错误,当我连接两个表时,它的显示是正确的

SELECT
a.name as module_name,
a.id,
b.id as subject_id,
b.SUBJECT_name
FROM module_table a
LEFT JOIN subject_table b ON b.id = a.subject_id
WHERE a.id = $somevalue
ORDER BY a.id DESC`
第一个表包含科目表和课程表的所有外键,另一个科目表连接到具有公共id列的协调表。。我想要模块表中给出的id的对应名称

最后一个表是我希望从中收集所需数据的查询结果 我的表格结构如下

模块只能包含在科目中,科目可以包含在课程中 每个主题可以有任意数量的cordinator,我将它们保留为JSON值

----------------------------------------------------------------------- MODULE TABLE _____________________________________________________ id | subject_id | course_id | cordinator_id | name ----------------------------------------------------------------------- COURSE TABLE __________________ id | course_name ----------------------------------------------------------------------- SUBJECT TABLE _________________________________________________ id | course_id | cordinator_id | SUBJECT_name ----------------------------------------------------------------------- CORDINATOR TABLE ______________________________________ id | cordinator_ids | cordinator_name Result TABLE ___________________________________________________________________________________________ id | module_name | subject_id | subject_name | course_id | course_name | cordinator_ids
我可以使用LEFT join成功地连接两个表,但在第三个表中,它报告了一个错误。

问题是您有一些拼写错误,并且忘记连接course\u表

以下是正确的查询:

SELECT
a.name as module_name,
a.id,
b.id as subject_id,
b.SUBJECT_name,
c.id as course_id,
c.course_name,
d.id as cordinator_id,
d.cordinator_name

FROM module_table a
LEFT JOIN subject_table b ON b.id = a.subject_id
LEFT JOIN course_table c ON c.id = a.course_id
LEFT JOIN cordinator_table d ON d.id = a.cordinator_id
WHERE a.id = $somevalue
ORDER BY a.id DESC
在这一行:

b.SUBJECT_name,
您必须在表SUBJECT\u表模式中使用大写的SUBJECT\u名称

您的查询缺少此联接,无法选择课程表字段:

LEFT JOIN course_table c ON c.id = a.course_id

错误是什么?您要连接哪些表?你的问题是什么?是的,我也有一个错误。那么你显然做错了,因为你没有理由不能加入你想要的那么多表。如果您不显示SQL,我无法给出更具体的答案。请选择a.name作为模块名称,a.id,b.id作为主题id,b.subject\u name,c.id作为课程id,c.course\u name,d.id作为cordinator\u id,d.cordinator_name FROM module_table a LEFT JOIN subject_table b ON b.id=a.subjectid_id LEFT JOIN cordinator_table d ON d.id=a.cordinator_id其中a.id=$somevalue ORDER BY a.id desc前四个表是给定的表。。。最后一个是必需的值。。第一个表将所有已连接的id连接到不同的表,我想连接这些id以获取它们各自的名称查询我正在尝试:选择a.name作为模块名称,a.id,b.id作为主题id,b.subject\u name,c.id作为课程id,c.course\u name,d.id作为cordinator\u id,d.cordinator_name来自模块_表a左连接subject_表b上的b.id=a.subjectid_id左连接cordinator表d上的d.id=a.cordinator_id,其中a.id=$somevalue按a.id排序,直到您拥有注释权限,请不要将您的评论发布为answers@user689:请回答正确答案或遵循其他方法,而不是在堆栈的功能上运行ques@atjoshi当你否决一个答案时,我更建议你说出你为什么这么做,这样我也可以知道海报是否编辑了他的问题,这样他就可以通知我,我将取消否决票。还有,我如何回答这样一个问题呢?如果标识符在创建时被转义/分隔,那么Samir-casting只对标识符起作用。由于我们没有创建脚本,所以不可能判断这是否是一个实际问题。
LEFT JOIN course_table c ON c.id = a.course_id