2 つのテーブルの結合を取りたい。どちらも列の数が等しくなく、一部は共通しており、一部は共通していません。
個々の列名を使用せずにそれらを結合するにはどうすればよいですか (間にダミー列を挿入します)。
いくつかのテーブルの結合をクエリして取得する必要があり、同じテーブルに対して異なる列名を持つ異なるデータベースでテストします。したがって、個々の列名をアドレス指定し、ダミー列を挿入してユニオンを取得する一般的な方法を使用できませんでした。
ありがとう、ゴクル。
2 つのテーブルの結合を取りたい。どちらも列の数が等しくなく、一部は共通しており、一部は共通していません。
個々の列名を使用せずにそれらを結合するにはどうすればよいですか (間にダミー列を挿入します)。
いくつかのテーブルの結合をクエリして取得する必要があり、同じテーブルに対して異なる列名を持つ異なるデータベースでテストします。したがって、個々の列名をアドレス指定し、ダミー列を挿入してユニオンを取得する一般的な方法を使用できませんでした。
ありがとう、ゴクル。
個々の列名を使用せずにそれらを結合するにはどうすればよいですか
できません。
UNION を使用する場合、列の数と型が一致している必要があります。
問題の 2 つ (またはそれ以上) のテーブルをSELECT...UNION...SELECT
調べて、適切なステートメントを合成できます。INFORMATION_SCHEMA.COLUMNS
列を用意して、共通の列のみを含めるように SQL を作成できます。
T-SQL の使用:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'FirstTable'
UNION
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'SecondTable'
例として C# を使用してロジックを説明します。
List<string> sharedColumnNames = CallTheAforementionedSql();
string unionStatement = string.Format(
"SELECT [{0}] FROM FirstTable UNION SELECT [{0}] FROM SecondTable",
string.Join("],[", shareColumnNames.ToArray())
);
var stuff = ExecuteSql(unionStatement);