テーブルの一致するすべての列の値を取得し、SQLで新しいテーブルに格納する方法

TechnoSavvy

私は3つのテーブルを持っています

Table 1 
ID  ParentID
234 456
123 456
344 789

表2

ID  col1 col2   CID
234 x    879    3
456 x    x      2
987 x    x      1
344 x    x      5
999 x    x      6

表3

TID  col1 col2  col3
1   x    X       x
2   x    x       x
3   x    x       x
4   x    x       x
5   x    x       x

私は達成しようとしています

  1. テーブル1のIDとparentIDをテーブル2のID列に一致させます
  2. table1の一致および不一致IDと親IDの結果を、フラグが一致/不一致の「Y」および「N」を使用して新しいtable4に保存する必要があります。

  3. 一致したIDの場合、CID = TIDに基づいてテーブル3からcol3の値を取得し、テーブル4に保存する必要があります

サブクエリを作成しようとしています。一致するクエリを取得して、さらに先に進みます。

SELECT * FROM table1 t1 INNER JOIN table2 t2  ON t1.ID=t2.ID AND t1.ParentID=t2.ID

しかし、テーブル1のID「123」ではなく1行しか取得していません

結果表

ID  ParentID
234 456

誰かがこれについて私を助けてくれますか?

ありがとう!

gotqn

LEFT JOINそれぞれIDとの一致する値と一致しない値を取得するために、2回使用できますParentIDまた、JOIN最後のテーブルまで実行するために結果を具体化する必要もありません

DECLARE @DataSource01 TABLE
(
    [ID] SMALLINT
   ,[ParentID] INT
);

DECLARE @DataSource02 TABLE
(
    [ID] SMALLINT
   ,[col1] CHAR(1)
   ,[col2] VARCHAR(3)
   ,[CID] TINYINT
);

DECLARE @DataSource03 TABLE
(
    [TID] SMALLINT
   ,[col1] CHAR(1)
   ,[col2] CHAR(1)
   ,[col3] CHAR(1)
);

INSERT INTO @DataSource01 ([ID],[ParentID])
VALUES (234, 456)
      ,(123, 456)
      ,(344, 789);

INSERT INTO @DataSource02 ([ID], [col1], [col2], [CID])
VALUES (234, 'x', '879', 3)
      ,(456, 'x', 'x', 2)
      ,(987, 'x', 'x', 1)
      ,(344, 'x', 'x', 5)
      ,(999, 'x', 'x', 6);

INSERT INTO @DataSource03 ([TID], [col1], [col2], [col3])
VALUES (1, 'x', 'X', 'x')
      ,(2, 'x', 'x', 'x')
      ,(3, 'x', 'x', 'x')
      ,(4, 'x', 'x', 'x')
      ,(5, 'x', 'x', 'x');

SELECT DS1.[ID]
      ,DS1.[ParentID]
      ,CASE WHEN DS2_1.[ID] IS NULL THEN 'N' ELSE 'Y' END
      ,CASE WHEN DS2_2.[ID] IS NULL THEN 'N' ELSE 'Y' END
FROM @DataSource01 DS1
LEFT JOIN @DataSource02 DS2_1
    ON DS1.[ID] = DS2_1.[ID]
LEFT JOIN @DataSource02 DS2_2
    ON DS1.[ParentID] = DS2_2.[ID];


SELECT DS1.[ID]
      ,DS1.[ParentID]
      ,CASE WHEN DS2_1.[ID] IS NULL THEN 'N' ELSE 'Y' END
      ,CASE WHEN DS2_2.[ID] IS NULL THEN 'N' ELSE 'Y' END
      ,DS3.[TID]
FROM @DataSource01 DS1
LEFT JOIN @DataSource02 DS2_1
    ON DS1.[ID] = DS2_1.[ID]
LEFT JOIN @DataSource02 DS2_2
    ON DS1.[ParentID] = DS2_2.[ID]
LEFT JOIN @DataSource03 DS3
    ON DS2_1.[CID] = DS3.[TID];

ここに画像の説明を入力してください

これがデータ結合の基本です。これで、必要なことは何でもできます(PIVOT、マテリアライズ、フィルター処理)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列の値と一致するすべての値をテーブルから取得しますか?

分類Dev

他の2つのテーブルに一致するものが存在する場合は、すべてのテーブル値を取得します

分類Dev

SQLは、別のテーブルに格納されている列の名前を取得します

分類Dev

別の列のフィルターに従って列のすべての新しい値を取得するためにSQLテーブルを照会する

分類Dev

SQL Server 2012に一致する列がない場合に、最初のテーブルからすべての列を取得する方法

分類Dev

SQL JOINは、すべての右側の列が一致する場合でも、左側のテーブルからデータを取得します

分類Dev

SQL:別のテーブルの何かに一致するすべての行を選択します

分類Dev

Access 2007 SQL-配列の値と一致するテーブルから値を取得しますか?

分類Dev

文字列が一致するデータベース内のすべてのテーブルを検索し、テーブル構造を取得します

分類Dev

すべての列が一致しない2つのテーブルをマージする

分類Dev

SQL ServerCompactで列に特定の値があるテーブルの行数を変数に格納します

分類Dev

QUERYを使用してテーブルをフィルタリングし、値の最大値に一致するテーブルの行全体を取得します

分類Dev

値が一致するか、LINQでnullになるテーブルから最初の値を取得します

分類Dev

PHPを使用してテーブルのさまざまな列に配列値を格納する方法

分類Dev

SQL で値を合計し、別のテーブル (Oracle データベース) に格納する方法

分類Dev

SQLで列が一致しない2つのテーブルを結合する方法

分類Dev

列のすべての要素が別のテーブルにある場合にのみ一致します

分類Dev

要素がSQLの別のテーブルのすべてに一致するかどうかを知る方法

分類Dev

配列に格納されている値の平均をテーブルに出力します

分類Dev

同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

分類Dev

htmlテーブルの各行の値を取得し、後で使用する変数に格納する

分類Dev

サブクエリのすべての値に一致するテーブルからすべての値を選択します

分類Dev

サブクエリのすべての値に一致するテーブルからすべての値を選択します

分類Dev

テーブルの行から取得した値を分離してスノーフレークの配列に格納する方法

分類Dev

列の変数が一致するテーブル名を取得します

分類Dev

MySQL JOIN->一致するものがない場合でも、正しいテーブルからすべてのデータを取得します

分類Dev

テーブル 1 のすべての値をクエリし、テーブル 2 の一致する値のみをクエリします。

分類Dev

テーブルの各行のテキストを取得し、これらのテキストを別のテーブルで照合し、すべての一致を含む新しいテーブルを作成します

分類Dev

Plpgsql; すべてのテーブル名を配列に格納します

Related 関連記事

  1. 1

    配列の値と一致するすべての値をテーブルから取得しますか?

  2. 2

    他の2つのテーブルに一致するものが存在する場合は、すべてのテーブル値を取得します

  3. 3

    SQLは、別のテーブルに格納されている列の名前を取得します

  4. 4

    別の列のフィルターに従って列のすべての新しい値を取得するためにSQLテーブルを照会する

  5. 5

    SQL Server 2012に一致する列がない場合に、最初のテーブルからすべての列を取得する方法

  6. 6

    SQL JOINは、すべての右側の列が一致する場合でも、左側のテーブルからデータを取得します

  7. 7

    SQL:別のテーブルの何かに一致するすべての行を選択します

  8. 8

    Access 2007 SQL-配列の値と一致するテーブルから値を取得しますか?

  9. 9

    文字列が一致するデータベース内のすべてのテーブルを検索し、テーブル構造を取得します

  10. 10

    すべての列が一致しない2つのテーブルをマージする

  11. 11

    SQL ServerCompactで列に特定の値があるテーブルの行数を変数に格納します

  12. 12

    QUERYを使用してテーブルをフィルタリングし、値の最大値に一致するテーブルの行全体を取得します

  13. 13

    値が一致するか、LINQでnullになるテーブルから最初の値を取得します

  14. 14

    PHPを使用してテーブルのさまざまな列に配列値を格納する方法

  15. 15

    SQL で値を合計し、別のテーブル (Oracle データベース) に格納する方法

  16. 16

    SQLで列が一致しない2つのテーブルを結合する方法

  17. 17

    列のすべての要素が別のテーブルにある場合にのみ一致します

  18. 18

    要素がSQLの別のテーブルのすべてに一致するかどうかを知る方法

  19. 19

    配列に格納されている値の平均をテーブルに出力します

  20. 20

    同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

  21. 21

    htmlテーブルの各行の値を取得し、後で使用する変数に格納する

  22. 22

    サブクエリのすべての値に一致するテーブルからすべての値を選択します

  23. 23

    サブクエリのすべての値に一致するテーブルからすべての値を選択します

  24. 24

    テーブルの行から取得した値を分離してスノーフレークの配列に格納する方法

  25. 25

    列の変数が一致するテーブル名を取得します

  26. 26

    MySQL JOIN->一致するものがない場合でも、正しいテーブルからすべてのデータを取得します

  27. 27

    テーブル 1 のすべての値をクエリし、テーブル 2 の一致する値のみをクエリします。

  28. 28

    テーブルの各行のテキストを取得し、これらのテキストを別のテーブルで照合し、すべての一致を含む新しいテーブルを作成します

  29. 29

    Plpgsql; すべてのテーブル名を配列に格納します

ホットタグ

アーカイブ