-1

私は、製品のインポート機能が、特別なプログラムに参加している学生ごとに個別のデータ行を要求するベンダーの SQL ステートメントに取り組んでいます。例えば:

Student ID    Program Name
12345         Special Education
12345         Title 1
12345         Limited English
67891         Special Education
67891         Gifted and Talented

複数の列を持つ単一の行ではなく、学生が関与するプログラムごとに学生ごとに個別のデータ行を提供するクエリステートメントを作成する方法がわかりません。誰かが私を正しい方向に向けることができますか?

私のテーブル構造は次のとおりです

表: 学生関連の列:

    student_number     FLOAT(126) 
    last_name          VARCHAR2(50 CHAR)
    first_name         VARCHAR2(50 CHAR)
    iep                NUMBER(10) 
    ellstatus          NUMBER(10) 
    gifted             NUMBER(10) 
    title1             NUMBER(10) 

    (plus hundreds of other non-relevant fields)

ありがとうございました。

4

2 に答える 2

0

さまざまな列 (iep、ellstatus、gifted、title1) のそれぞれにプログラム情報があると思います。このような場合は; それは正規化されたデータベースではなく、後で問題が発生する可能性があります。

iep、title1、gifted、ellstatus の数値をプログラムにどのようにマッピングするのか正確にはわからないので、学生/分野の関係ごとに 1 つの行を指定して、数値を選択する方法を説明します。クエリにフォーマットを追加して、期待どおりにプログラム名を表示できます。

これはユニオン演算子を使用しています。この演算子は、2 つの異なるクエリの結果セットを結合します。union allを使用しない場合、繰り返される行は 1 回だけ表示されます。番号が繰り返される可能性があるため、すべて追加しました。

select student_id, program from (
  select student_id, iep program from students where iep is not null
   union all
  select student_id, title1 program from students where title1 is not null
   union all
  select student_id, gifted program from students where gifted is not null
   union all
  select student_id, ellstatus program from students where ellstatus is not null
);

ユニオン演算子の詳細については、http: //docs.oracle.com/cd/B28359_01/server.111/b28286/queries004.htmにアクセスしてください。

于 2012-09-10T21:01:18.373 に答える
0

テーブルの構造を見なくても、学生情報とプログラム情報が別々のテーブルにあると思います。したがって、次のようにします。

SELECT s.StudentId, p.ProgramName
FROM students s
INNER JOIN programs p
   ON s.studentid = p.studentid
于 2012-09-10T20:21:50.470 に答える