0

いくつかのテーブルを結合して、前提条件を持つクラスのリストを作成しようとしています。前提条件と元のクラスの両方にクラス名が必要であるという事実を除いて、すべて問題ありません。

これまでのところ、私は持っています

SELECT course_name, c.course_number, course_name, prereq
FROM rearp.course c, rearp.prereq p
WHERE c.course_number = p.course_number;

これは私に与えます(course_nameが2回そこにあるという問題をすでに見ることができます[それ以外の方法でそれを処理する方法がわかりません])

  • コース名 (OK)
  • クラス(うん)
  • コース名をもう一度(待って、同じ名前です!)
  • 前提条件(良い)

形式は無視してください。コース名または前提条件は、前提条件ではなく元のコースにのみ対応していることに注意してください。

私の問題は、名前を一致させることができないことです。

4

1 に答える 1

6

エイリアスを使用し、フィールド リストに常にテーブル名を含めるようにしてください。

SELECT
    c.course_name,
    c.course_number,
    p.course_name AS prereq_course_name,
    p.prereq
FROM rearp.course AS c, rearp.prereq AS p
WHERE c.course_number = p.course_number

また、1 文字の代わりに意味のあるテーブル エイリアス名を使用し、暗黙的な結合の代わりに実際の結合を使用してみてください。MySQL を使用している場合、結合はクロス結合になりますが、これは非効率的で不要です。

編集:フィールドリストにカンマを追加しました...

于 2012-11-16T04:47:51.010 に答える