2012-06-03 3 views
1

죄송합니다.이 게시물의 제목이 약간 혼란 스럽다면 죄송합니다. 내 질문은 오히려 간단하며 솔루션은 가입과 관련이 있다는 것을 알고 있지만 관련 게시물을 정확히 파악할 수는 없습니다.두 번째 열과 같은 세 번째 열로 연결

나는 MySQL에서 수업 일정을 짜고 수업은 전제 조건이 있습니다. 이 작업을 수행하기 위해 사용할 수있는 모든 클래스 (ClassName)와 기본 ID (Class_ID)가있는 1 개의 테이블이 있습니다. 그런 다음이 학기에 제공되는 다른 수업 테이블을 사용하고 "사용 가능한 수업"테이블의 정보를 사용하여 작성했습니다. 이 테이블은 고유 ID (ClassSemester_ID), Class_ID 및 클래스의 제반 사항에 대한 Prerec_ID로 시작합니다. Prerec_ID는 실제로 다른 클래스의 Class_ID입니다.

이것은 실제 일정에서 Class_ID와 Prerec_ID와 일치하도록 ClassName 열이 필요하다는 것을 의미합니다. 더 많은 시각 :

표 1 : ALLCLASSES COL1 : 클래스 이름

표 2 : SemesterClasses COL1 : Col2의를 CLASS_ID Col2의 을 ClassSemester_ID : 열 3을 CLASS_ID : 나는 쿼리를 생성하려면 어떻게

을 Prerec_ID 그 연결된 ClassName을 보여주는 Class_ID와 Prerec_ID 둘 다 출력 할 것인가?

미리 감사드립니다.

-CB

답변

2

는 내가 그것을 클래스 ID, 이름 및 전제 조건 이름을 가지는 모든 SemesterClasses 행을 반환해야

select SemesterClasses.Class_ID, AllClasses.ClassName, PreRequisite.ClassName as PreRequisiteName 
from SemesterClasses 
left join AllClasses on AllClasses.Class_ID = SemesterClasses.Class_ID 
left join AllClasses as PreRequisite on PreRequisite.Class_ID = SemesterClasses.Prerec_ID 

으로 더 효율적 것입니다 생각합니다. 그 해의 학기 수업에 열을 추가하고 그 곳에 필터를 적용 할 수도 있습니다.

+0

여러분이 최고입니다! 도움을 주신 모든 분들께 감사드립니다. – user1262890

0

클래스와 해당 전제 조건 클래스 모두의 클래스 이름을 원하십니까?

select Classes.Class_ID, Classes.ClassName, Sem.Prerec_ID, Prereq.ClassName from 
AllClasses as Classes inner join 
SemesterClasses as Sem on Classes.Class_ID = Sem.Class_ID inner join 
AllClasses as Prereq on Prereq.Class_ID = Sem.Prerec_ID 
0

은 일반적으로 별명과 같은 테이블을 사용하는 것이 도움이되기를 바랍니다 - 이런 걸;

select a.className, b.className 
from Classes a, Classes b, mytable 
where prereq_id = a.class_id 
and sem.class_id = b.class_id 
관련 문제