1

この投稿のタイトルが少しわかりにくい場合は申し訳ありません。私の質問はかなり単純で、解決策は結合に関係していることはわかっていますが、関連する投稿を正確に把握することはできません。

MySQLでクラスのスケジュールをまとめていますが、クラスには前提条件があります。これを行うために、使用可能なすべてのクラス(ClassName)と、もちろんプライマリID(Class_ID)を含む1つのテーブルがあります。次に、「利用可能なクラス」テーブルの情報を使用して作成された、今学期に提供されるクラスの別のテーブルがあります。このテーブルは、一意のID(ClassSemester_ID)、Class_ID、およびクラスの前提条件のPrerec_IDで始まります。Prerec_IDは、実際には別のクラスのClass_IDです。

これは、実際のスケジュールでは、ClassName列をClass_IDとPrerec_IDの両方と一致させる必要があることを意味します。より視覚的に:

表1:AllClasses Col1:Class_ID Col2:ClassName

表2:SemesterClasses Col1:ClassSemester_ID Col2:Class_ID Col3:Prerec_ID

関連付けられたClassNameを示すClass_IDとPrerec_IDの両方を出力するクエリを作成するにはどうすればよいですか?

よろしくお願いします!

-CB

4

3 に答える 3

2

私はそれがより効率的だと信じています

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

クラスID、名前、および前提条件の名前を持つすべてのSemesterClasses行を返す必要があります。また、その年の学期クラスなどに列を追加し、場所にフィルターを適用することもできます。

それが役に立てば幸い

于 2012-06-03T13:18:42.447 に答える
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
于 2012-06-03T13:06:15.973 に答える
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
于 2012-06-03T13:25:05.013 に答える