내 코드는
select class.name as classname,
class.hours as hours,
teachers.first_name as teacherFirstName,
teachers.last_name as teacherLastName
from teachers,class
left join class_teachers cl on class.id = cl.class_ref
left join class_teachers cl1 on teachers.id = cl1.teachers_ref
오류가 있습니다
#1054 - Unknown column 'teachers.id' in 'on clause
수업과 교사를 교환 할 때 오류는
#1054 - Unknown column 'class.id' in 'on clause
문제가 뭔지 아세요?
편집하다
CREATE TABLE `class` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`hours` int(3) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `class_teachers` (
`class_ref` int(11) NOT NULL,
`teachers_ref` int(11) NOT NULL
)
CREATE TABLE `teachers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)
class_teachers는 중간 테이블입니다. 이 데이터베이스는 한 학급에 여러 명의 교사가 있어야합니다. 예를 들어 체육 수업에는 남학생과 여학생을위한 별도의 교사가있을 수 있습니다. 쿼리에는 교사 이름, 수업 이름 및 수업 시간이 포함 된 수업 목록이 표시되어야합니다.
클래스 테이블
id name hours
1 science 3
2 math 5
교사 테이블
id first_name last_name
1 Ronald Manlapao
2 hello goodbye
3 elise elise
4 me me
class_teachers 테이블
class_ref teachers_ref
2 2
1 1
1 2
시도
select c.name as classname, c.hours as hours, t.first_name as teacherFirstName, t.last_name as teacherLastName
from teachers t, class c
left join class_teachers cl on (c.id = cl.class_ref and t.id = cl.teachers_ref)
하지만 여전히 같은 오류
섹션을 포함하도록 class_teachers 테이블을 class_teachers_section으로 업데이트했습니다. 아이디어는 수업이 다른 교사와 다른 섹션을 포함 할 수 있다는 것입니다. 예를 들어 1 학년 체육 수업은 모든 섹션을 포함 할 수 있습니다 (3 섹션으로 가장 할 수 있음) ... 남학생 교사는 여학생과 다를 수 있습니다.
select class.name as classname,
class.hours as hours,
teachers.first_name as teacherFirstName,
teachers.last_name as teacherLastName,
section.name as sectionName
from class_teachers_section cls
left join class on class.id = cls.class_ref
left join teachers on teachers.id = cls.teachers_ref
left join section on section.id = cls.section_ref
where section.name = 'grade 1'
기본 테이블을 class_teachers로 변경하는 것이 좋으며 교사와 클래스 테이블을 참조해야합니다.
select class.name as classname,
class.hours as hours,
teachers.first_name as teacherFirstName,
teachers.last_name as teacherLastName
from class_teachers cl
left join class on class.id = cl.class_ref
left join teachers on teachers.id = cl.teachers_ref
문제는 from a,b
이전 left join
에 사용 하고 left join
on 절은을 찾을 수 b.id
있으므로 수업과 교사를 교환하면 다른 오류가 발생합니다.
선생님과 수업을 먼저 교차 참여시키고 싶다면 join
insead of ,
. 조인 조건이 있으므로 또는 을
사용하십시오 .left join
full outer join
select class.name as classname,
class.hours as hours,
teachers.first_name as teacherFirstName,
teachers.last_name as teacherLastName
from teachers
join class
left join class_teachers cl
on class.id = cl.class_ref
and teachers.id = cl.teachers_ref
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다