sql >> データベース >  >> RDS >> SQLite

実用的な例を使用したSQLiteCROSSJOIN

    概要 :このチュートリアルでは、SQLite CROSS JOINの使用方法を学習します 複数のテーブルからの2つ以上の結果セットを組み合わせる。

    SQLite CROSS JOINの紹介 条項

    LEFT JOINを使用する場合 、INNER JOIN 、またはCROSS JOIN ONなし またはUSING 節、SQLiteは関連するテーブルのデカルト積を生成します。デカルト積の行数は、関連する各テーブルの行数の積です。

    2つのテーブルAとBがあるとします。次のステートメントは、クロス結合を実行し、AテーブルとBテーブルの行のデカルト積を生成します。

    SELECT *
    FROM A JOIN B;Code language: SQL (Structured Query Language) (sql)
    SELECT *
    FROM A
    INNER JOIN B;Code language: SQL (Structured Query Language) (sql)
    SELECT *
    FROM A
    CROSS JOIN B;Code language: SQL (Structured Query Language) (sql)
    SELECT * 
    FROM A, B;Code language: SQL (Structured Query Language) (sql)

    AテーブルにN行、BテーブルにM行、CROSS JOINがあるとします。 これら2つのテーブルのうち、NxMを含む結果セットが生成されます。 行。

    Kの3番目のテーブルCがあるとします。 行、CROSS JOINの結果 これら3つのテーブルの句には、NxMxKが含まれます。 行、これは非常に巨大な場合があります。したがって、CROSS JOINを使用するときは十分に注意する必要があります 条項。

    INNER JOINを使用します およびLEFT JOIN CROSS JOINよりも頻繁に句 句。ただし、CROSS JOINがあります。 場合によっては非常に役立つ句。

    たとえば、メンバーシップデータベースのメンバーと日付データのようなデータで完全に満たされた2つのディメンションを持つマトリックスが必要な場合です。関連するすべての日付について、メンバーのアテンダントを確認する必要があります。この場合、CROSS JOINを使用できます 次のステートメントとしての句:

    SELECT name,
           date 
    FROM members
    CROSS JOIN dates;Code language: SQL (Structured Query Language) (sql)

    SQLite CROSS JOIN 条項の例

    次のステートメントは、ranksを作成します およびsuits カードのデッキのランクとスーツを格納し、これら2つのテーブルに完全なデータを挿入するテーブル。

    CREATE TABLE ranks (
        rank TEXT NOT NULL
    );
    
    CREATE TABLE suits (
        suit TEXT NOT NULL
    );
    
    INSERT INTO ranks(rank) 
    VALUES('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10'),('J'),('Q'),('K'),('A');
    
    INSERT INTO suits(suit) 
    VALUES('Clubs'),('Diamonds'),('Hearts'),('Spades');Code language: SQL (Structured Query Language) (sql)

    次のステートメントは、CROSS JOINを使用しています カードデータの完全なデッキを返す句:

    SELECT rank,
           suit
      FROM ranks
           CROSS JOIN
           suits
    ORDER BY suit;Code language: SQL (Structured Query Language) (sql)
    ランク スーツ
    2 クラブ
    3 クラブ
    4 クラブ
    5 クラブ
    6 クラブ
    7 クラブ
    8 クラブ
    9 クラブ
    10 クラブ
    J クラブ
    Q クラブ
    K クラブ
    A クラブ
    2 ダイヤモンド
    3 ダイヤモンド
    4 ダイヤモンド
    5 ダイヤモンド
    6 ダイヤモンド
    7 ダイヤモンド
    8 ダイヤモンド
    9 ダイヤモンド
    10 ダイヤモンド
    J ダイヤモンド
    Q ダイヤモンド
    K ダイヤモンド
    A ダイヤモンド
    2 ハート
    3 ハート
    4 ハート
    5 ハート
    6 ハート
    7 ハート
    8 ハート
    9 ハート
    10 ハート
    J ハート
    Q ハート
    K ハート
    A ハート
    2 スペード
    3 スペード
    4 スペード
    5 スペード
    6 スペード
    7 スペード
    8 スペード
    9 スペード
    10 スペード
    J スペード
    Q スペード
    K スペード
    A スペード

    このチュートリアルでは、SQLite CROSS JOIN句を使用して、結合に関係する複数のテーブルのデカルト積を生成する方法を学習しました。


    1. 技術的な比較:MicrosoftAccess2016とSQLServer2016

    2. MS SQL Serverの間に範囲の境界が含まれていますか?

    3. SQLServerJOINSについて知っておくべきことすべて

    4. MIN()–MySQLの列の最小値を見つける