0

私はMYSQLを使用しています。データベースに2つのテーブルがあります。

表1:「courseTable」には2つの列があります。

courseId
courseName

表2:「prereqTable」には2つの列があります。

courseId
prereqCourseId

表2の両方の列は、表1のcourseIdに対応しています。courseIdのcourseNameとprereqCourseIdのcourseNameを含むテーブルになるクエリを実行しようとしています。

私はここで立ち往生しています:

SELECT `course`.courseName, `prereq`.prereqCourseId FROM `course`
LEFT OUTER JOIN `prereq`
ON `course`.courseId = `prereq`.courseId
4

3 に答える 3

1

prereqTableテーブルを参照してコーステーブルに2回参加する必要があります

SELECT a.courseName,c.courseName
FROM courseTable AS a
LEFT OUTER JOIN prereqTable AS b ON a.courseId=b.courseId
LEFT OUTER JOIN courseTable AS c ON b.prereqCourseId=c.courseId
于 2012-07-19T19:33:23.400 に答える
1

同じテーブルを 2 回結合する場合は、エイリアスを使用する必要があります。

SELECT p.name AS parent, c.name AS child
  FROM relations AS r
  LEFT JOIN nodes AS p
    ON(p.id=r.parent)
  LEFT JOIN nodes AS c
    ON(c.id=r.child )

AS省略可能ですが、読みやすさが向上し、コンマを忘れただけではないことを示すため、推奨されます。比較:

SELECT  a b, c d, e, f, g, h i, ...

SELECT a AS b, c AS d, e, f, g, h AS i, ...
于 2012-07-19T19:39:09.857 に答える
0

同じテーブルを2回結合することは可能です。テーブルの適切なインスタンスから列を選択できるように、各インスタンスのテーブルに異なるエイリアスを割り当てる必要があります。そのようです:

SELECT
    `course_main`.courseName,
    `course_prereq`.courseName AS `prereqCourseName`

FROM `course` AS `course_main`

LEFT OUTER JOIN `prereq`
ON `course_main`.courseId = `prereq`.courseId

LEFT OUTER JOIN `course` AS `course_prereq`
ON `course_prereq`.courseId = `prereq`.prereqCourseId
于 2012-07-19T19:30:59.473 に答える