2016-11-22 87 views
0

私は2つの別々のテーブルを一緒に結合する必要があるクエリを実行しようとしていますが、それがどのテーブルから来たのかをタグ付けします。このよう別のテーブルの2つのカラムをSQLで1つにまとめるOracle SQL開発者

...

table_1   table_2 
    teacher_name  student_name 
    Steve    Jimmy 
    George    Craig 

    Output: 

    NAME:  Title: 
    Steve  Teacher 
    George  Teacher 
    Jimmy  Student 
    Craig  Student 

は、ここで私がする必要があることすべてがから姓名を組み合わせることで、私は今のところ...

SELECT x.first_name, x.last_name, y.first_name, y.last_name, x.city, y.city 
    FROM (SELECT i.first_name, i.last_name, z.city, z.zip 
    FROM instructor i JOIN 
    zipcode z 
    ON z.zip = i.zip 
    WHERE z.zip = 10025) x 

     LEFT OUTER JOIN 

      (SELECT s.first_name, s.last_name, z.city, z.zip 
      FROM student s JOIN zipcode z 
      ON s.zip = z.zip 
      WHERE z.zip = 10025) y 
      ON y.zip = x.zip 

は基本的に持っているものですxとyのクエリを1つの列とその両方の都市にクエリし、その人がインストラクタテーブル(x)または学生テーブル(y)から来たかどうかを識別する列を作成します

更新:

私はサブクエリと外部ジョイントを取り除いてしまったので、私はクエリが機能しています...ここで私が結んだコードはあります。どうもありがとうございます!

SELECT i.first_name AS first_name, i.last_name AS last_name, 'Teacher' AS role 
    FROM instructor i JOIN zipcode z 
    ON i.zip = z.zip 
    WHERE z.zip = 10025 

    UNION ALL 

    SELECT s.first_name AS first_name, s.last_name AS last_name, 'Student' AS role 
    FROM student s JOIN zipcode z 
    ON s.zip = z.zip 
    WHERE z.zip = 10025 
    ORDER BY role, last_name, first_name; 
+0

あなたは私たちにいくつかのサンプルデータと予想される出力を表示することができますか?今は姓だけで、姓や都市ではありません。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

答えて

0
SELECT teacher_name + teacher_last as Name, city, 'Teacher' as source 
FROM TeacherTable  
UNION ALL 
SELECT student_name + student_last as Name, city, 'Student' as source 
FROM StudentTable  
+0

ありがとう、それはトリックを行い、私のコードのひどい部分を簡略化しました。申し訳ありませんが、私の質問があまり言い表せなかったら。それは私に良い出発点を与えてくれました。 – B1azingPh03nix

+0

@ BlazingPh03nixあなたのアップデートソリューションでは、 'z.zip'の代わりに' JOIN zipcode'は必要ありません。 'WHERE i.zip = 10025'を使用してください。 –

関連する問題