7

SQL に 3 つのテーブルがあり、それらをすべて 1 つに結合する必要があります。1 つのテーブル内のすべてのテーブルのすべてのフィールドが必要です。すべてのテーブルには、3 つの異なる年の同じフィールドが含まれています。私は次のコードを書きました:

CREATE TABLE COL_TBL_TRAINING_ALL_YEARS AS(
SELECT 
COL_TBL_2010_TRN_RESULTS_new.*,
COL_TBL_TRN_RESULTS_GEMS_2011.*, 
COL_TBL_TRN_RESULTS_GEMS_2012.*
FROM COL_TBL_2010_TRN_RESULTS_new,
COL_TBL_TRN_RESULTS_GEMS_2011, 
COL_TBL_TRN_RESULTS_GEMS_2012
WHERE COL_TBL_2010_TRN_RESULTS_new.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2011.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2012.SYS_EMP_ID_NR)

そして、「AS」という単語の近くで間違った構文が表示され、「=」の近くで間違った構文が表示されます

私は自分の SQL の本を読みましたが、これを行う方法についての説明が見つからないようです。どんな助けでも大歓迎です。

4

3 に答える 3

9

2 つの手順を実行する必要があります。

  1. UNION ALLそれが言及されたように、を使用してください。ただし、列が欠落している場合はNULL、その列に使用する必要があります。

  2. 結果を新しいテーブルに挿入する必要があります。

したがって、次のようになります。

SELECT * 
INTO   yournewtablename 
FROM   (SELECT col1, 
               col2, 
               col3 
        FROM   col_tbl_2010_trn_results_new 
        UNION ALL 
        SELECT col1, 
               col2, 
               col3 
        FROM   col_tbl_trn_results_gems_2011 
        UNION ALL 
        SELECT col1, 
               col2, 
               NULL AS Col3 
        FROM   col_tbl_trn_results_gems_2012) n 

表示するデモを次に示します: SQL FIDDLE

于 2013-03-04T15:12:23.643 に答える
1

サブクエリが結果を返すと仮定すると、構文は本質的に正しいように見えます。次の 2 つのことを試してみてください。

  1. SELECT ステートメントを単独で実行して、それが正しいことを確認してください。
  2. AS と括弧の間にスペースを入れます。

このページによると、括弧が必要です。

于 2013-03-04T14:49:21.317 に答える
1

UNION ALL が必要です:

SELECT * FROM COL_TBL_2010_TRN_RESULTS_new UNION ALL
SELECT * FROM COL_TBL_TRN_RESULTS_GEMS_2011 UNION ALL 
SELECT * FROM COL_TBL_TRN_RESULTS_GEMS_2012
于 2013-03-04T14:41:45.930 に答える