2016-08-05 7 views
0

私はMYSQLを初めて使用しており、与えられた2つのテーブル(Table1,2)のUNIONによってテーブル(Table_Result)を作成したいと考えています。テーブル1,2には、同じ "メモリ"カラムにいくつかの値がありますが、同じメモリのカウントは同じでも異なってもかまいません。私はテーブルの先頭に相対的な列を持つメモリの最大数を持つ "メモリ"列に基づいて新しいテーブル(table_resultのような)を作成したい。他のテーブルと比較して少ないメモリ数を持つテーブルは、 "NA"(table_resultを参照)で満たされた他のカラム(NAME、CONTENT、またはNAME1、CONTENT1)を持ちます。MySQLは2つのテーブルのUNIONからテーブルを作成します

どのように私は結果を得るためにMySQLのクエリスクリプトを書くことができますか?ご協力いただきありがとうございます。 // RG

BR

TABLE1 
MEMORY  NAME   CONTENT 
MEM 0110H Systemkennung DB01 
MEM 0110H Hauptversion DB03 
MEM 0110H Unterversion DB00 
MEM 0110H Patchlevel  DB04 
MEM 0200H Steuerkanal1 DB01 
MEM 0200H Steuerkanal2 DB01 
MEM 0200H Steuerkanal3 DB01 
MEM 0260H Steuerkanal35 DB01 
MEM 0210H BUE-Gruppe  DB01 
MEM 0210H Licht-Gruppe1 DB01 

TABLE2 
MEMORY  NAME1   CONTENT1 
MEM 0110H System   DB01 
MEM 0110H Hauptversion1 DB02 
MEM 0200H Steuerkanal11 DB01 
MEM 0200H Steuerkanal22 DB06 
MEM 0200H Steuerkanal34 DB05 
MEM 0200H Steuerkanal35 DB04 
MEM 0260H Steuerkanal36 DB02 
MEM 0210H BUE-Gruppe  DB01 

TABLE_RESULT 
MEMORY  NAME   CONTENT  NAME1   CONTENT1 
MEM 0110H Systemkennung DB01  System   DB01 
MEM 0110H Hauptversion DB03  Hauptversion1 DB02 
MEM 0110H Unterversion DB00  NA    NA 
MEM 0110H Patchlevel  DB04  NA    NA 
MEM 0200H Steuerkanal1 DB01  Steuerkanal11 DB01 
MEM 0200H Steuerkanal2 DB01  Steuerkanal22 DB06 
MEM 0200H Steuerkanal3 DB01  Steuerkanal34 DB05 
MEM 0200H NA    NA   Steuerkanal35 DB04 
MEM 0260H Steuerkanal35 DB01  Steuerkanal36 DB02 
MEM 0210H BUE-Gruppe  DB01  BUE-Gruppe  DB01 
MEM 0210H Licht-Gruppe1 DB01  NA    NA 

答えて

0
SELECT 
    ifnull(a.MEMORY, b.MEMORY) AS MEMORY, 
    ifnull(a.NAME, 'NA') AS NAME, 
    ifnull(a.CONTENT, 'NA') AS CONTENT, 
    ifnull(b.NAME, 'NA') AS NAME1, 
    ifnull(b.CONTENT, 'NA') AS CONTENT1 
FROM TABLE1 AS a 
LEFT JOIN TABLE2 AS b ON a.MEMORY = b.MEMORY 
UNION 
SELECT 
    ifnull(a.MEMORY, b.MEMORY) AS MEMORY, 
    ifnull(a.NAME, 'NA') AS NAME, 
    ifnull(a.CONTENT, 'NA') AS CONTENT, 
    ifnull(b.NAME, 'NA') AS NAME1, 
    ifnull(b.CONTENT, 'NA') AS CONTENT1 
FROM TABLE1 AS a 
RIGHT JOIN TABLE2 AS b ON a.MEMORY = b.MEMORY 
+0

私は非常に基本的な質問をするために申し訳ありません。しかし、ここでは "a"と "b"は何ですか?また、どのようにして結果を格納する新しいテーブルを作成できますか? –

+0

コードを試しても動作しません。 –

0

回答は以下のようになり出てくる:

MEM 0110H, Systemkennung1, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung11, DB 01 
MEM 0110H, Systemkennung1, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung12, DB 01 
MEM 0110H, Systemkennung1, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung2, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung3, DB 01, Systemkennung13, DB 01 
MEM 0110H, Systemkennung4, DB 01, Systemkennung13, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung14, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung15, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung16, DB 01 
MEM 0200H, Systemkennung5, DB 01, Systemkennung17, DB 01 
MEM 0200H, Systemkennung6, DB 01, Systemkennung17, DB 01 
MEM 0200H, Systemkennung7, DB 01, Systemkennung17, DB 01 
MEM 0260H, Systemkennung8, DB 01, Systemkennung18, DB 01 
MEM 0210H, Systemkennung9, DB 01, Systemkennung19, DB 01 
MEM 0210H, Systemkennun10, DB 01, Systemkennung19, DB 01 
+0

MEMORYとCONTENTに参加しますか? IEの場合、これらの2つの列は同じでなければなりませんか? – SIDU

+0

同じ値を持つことができる両方のテーブルのカラムは、MEMORY列だけです。他の列を確認する必要はありません。これは、table1に2つの同じ値のMEMORYがあり、table2に3つの同じ値がある場合、結果の表には3つの値があり、他の列にはNAMEおよびCONTENTS列にNA NAが追加されます。 –

関連する問題