为什么我会收到未知列&list; class_class.pk_class_id'在' on条款'错误?

时间:2017-06-10 11:08:13

标签: sql join

我希望在给定学年和班级的不同表格中获取学生详细信息。 我使用的查询是:

 SELECT
  list_acad_years.acad_year,
  a.fk_stu_id,
  tbl_stu_details.stu_fname,
  tbl_stu_details.stu_sname,
  a.fk_section_id,
  b.fk_class_id,
  list_class.class_name,
  list_sections.section_code
FROM
  tbl_stu_details,
  list_class,
  list_sections,
  list_acad_years
INNER JOIN
  tbl_stu_class AS a
ON
  (
    list_acad_years.pk_acad_year_id = a.fk_year_id
  )
INNER JOIN
  tbl_stu_class AS b
ON
  (list_class.pk_class_id = b.fk_class_id)
WHERE
  (
    list_acad_years.acad_year = '2019'
  ) AND(list_class.class_name = '10')

它显示以下错误:

#1054 - Unknown column 'list_class.pk_class_id' in 'on clause'
我的表的

列是:

tbl_stu_class:

pk_stu_cls_id`, `fk_stu_id`, `fk_year_id`, `fk_class_id`, `fk_section_id`, `current_yr`

list_class:

`pk_class_id`, `class_name`, `class_code`, `fk_user_id`

list_sections:

pk_section_id`, `section_code`, `section_description`, `fk_user_id`

list_acad_years:

`pk_acad_year_id`, `acad_year`, `acad_year_code`, `fk_user_id`

tbl_stu_details:

`pk_stu_id`, `stu_id`, `username`, `stu_fname`, `stu_mname`, `stu_sname`

list_sections:

`pk_section_id`, `section_code`, `section_description`, `fk_user_id`

为什么列出现时会说未知的色谱柱? 如果你可以帮我改进这个查询,那将会很有帮助... 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您的问题是您使用的是旧式连接。期。更糟糕的是,你将它们与新的风格连接结合起来。

不能用逗号来理解表的名称。这限制了定义的范围。

您似乎知道如何正确编写<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script> <div ng-app="Netsafe" ng-controller="activityController"> <div ng-repeat="checkbox in checkboxData" class="form-check form-check-inline col-sm-4"> <label> <input type="checkbox" ng-model="checkbox.checked"/> {{checkbox.name}} </label> </div> </div>。因此,只需修复JOIN子句,您的代码就可以正常工作。

答案 1 :(得分:0)

如果使用多个FROM表,则内部联接将始终连接到from语句中的最后一个表。
我刚刚改变了INNER JOIN

的位置

尝试这个让我知道它是否有效。

SELECT
  list_acad_years.acad_year,
  a.fk_stu_id,
  tbl_stu_details.stu_fname,
  tbl_stu_details.stu_sname,
  a.fk_section_id,
  b.fk_class_id,
  list_class.class_name,
  list_sections.section_code
FROM
  tbl_stu_details,
  list_class INNER JOIN
  tbl_stu_class AS b
ON
  (list_class.pk_class_id = b.fk_class_id),
  list_sections,
  list_acad_years
INNER JOIN
  tbl_stu_class AS a
ON
  (
    list_acad_years.pk_acad_year_id = a.fk_year_id
  )
WHERE
  (
    list_acad_years.acad_year = '2019'
  ) AND(list_class.class_name = '10')