2016-07-13 13 views
0

同じカラム名を持つ2つのsqlite3テーブルがあり、それらを比較したいと思います。これを行うには、テーブルを結合して同じ名前の列を並置する必要があります。 テーブルは、最初の列として配置したい同じ列を共有します。2つのテーブルを結合して同じ名前のカラムを並置する

のは、私はテーブルt1およびテーブルt2

テーブルT1持って想像してみましょう:

SharedColumn | Height | Weight 
     A | 2 | 70 
     B | 10 | 100 

表T2:

SharedColumn | Height | Weight 
     A | 5 | 25 
     B | 32 | 30 

私は私のクエリの結果として取得したいことは次のとおりです。

SharedColumn | Height_1 | Height_2 | Weight_1 | Weight_2 
     A  | 2  |  5 | 70 | 25  
     B  | 10 |  32 | 100 | 30 

私の実際のケースでは、私は多くの列を持っているので、順序を指定するために各列名を2回書くのは避けたいと思います。

列の名前を変更することは私の主な関心事ではありません。最も興味深いのは、同じ名前の列を並置することです。

+0

あなたが実行し、テーブルを結合する必要があなたのクエリは何ですか? – Farside

+0

実際に私はクエリを書く方法を知らない、それは私の問題です。私はt1とt2のテーブルで与えた小さな例で説明したように私の2つのテーブルをマージすることができるクエリを探しています。 – avocado

答えて

2

SQLで直接行う方法はありません。特に、ソースの識別にカラムの名前を変更する必要があるため、動的SQLを正直に使用する必要があります。しないでください! 。列の名前を書く

は、単に、ほとんどのSQLツールは、選択を生成するための方法を提供し、ちょうどそれらをコピーして、正しい場所に配置します:

SELECT t1.sharedColumn,t1.height as height_1,t2.height as height_2 ... 
FROM t1 
JOIN t2 ON(t1.sharedColumn = t2.sharedColumn)+ 
+0

はい、ありがとう、私はこのクエリ構造についても考えました。 SELECTの各列名を書くことは実際の選択肢です。 しかし、私はそれらを1つずつ書き込む必要はありません。 列の名前を変更せずに同じ結果テーブル構造を取得する方法はありますか?名前の変更が主な問題だと言われているようです – avocado

0

は、所望の結果を得るために次のクエリを試してみてください!その後

SELECT t1.Height AS Height_1, t1.Weight AS Weight_1, t1.sharedColumn AS SharedColumn 
    t2.Height AS Height_2, t2.Weight AS Weight_2 
    FROM t1 INNER JOIN t2 
    ON t1.sharedColumn = t2.sharedColumn 
    ORDER By t1.sharedColumn ASC 

、次の行で結果を取得することができます

$result['SharedColumn']; 
$result['Height_1']; 
$result['Height_2']; 
$result['Weight_1']; 
$result['Weight_1']; 
関連する問題