Latest web development tutorials

SQLiteは参加します

SQLiteはデータベースレコードに複数のテーブルを結合するための句を結合されています。 JOINテーブル手段内の2つのフィールドを組み合わせることにより、共通の値です。

SQLは、接続には3つの主なタイプを定義しています。

  • クロスコネクト - CROSS JOINを

  • エン - INNER JOINは

  • 外部接続 - OUTER JOIN

私たちが続ける前に、私たちは二つのテーブルCOMPANYおよびDEPARTMENTがあると仮定しましょう。 私たちは、会社のテーブルのINSERT文を埋めるために使用さ見てきました。 今、私たちは以下に記載されている会社テーブルのレコードを想定してみましょう:

IDのNAME AGEアドレスSALARY
---------- ---------- ---------- ---------- ----------
1ポール32カリフォルニア20000.0
2アレン25テキサス15000.0
3テディ23ノルウェー20000.0
4マーク25リッチモンド65000.0
5デイビッド27テキサス85000.0
6金22サウスホール45000.0
7ジェームス・24ヒューストン10000.0

別のテーブルには、次のように定義され、DEPARTMENTです。

(表DEPARTMENTのCREATE
   ID INT PRIMARY KEY NOT NULL、
   DEPT CHAR(50)NOT NULLと、
   EMP_ID INT NOT NULL
);

次は、DEPARTMENT表を満たしたINSERT文であります:

INSERT INTO DEPARTMENT(ID、DEPT、EMP_ID)
VALUES(1、 'ITは課金'、1);

INSERT INTO DEPARTMENT(ID、DEPT、EMP_ID)
VALUES(2、「エンジニアリング」、2)。

INSERT INTO DEPARTMENT(ID、DEPT、EMP_ID)
VALUES(3、 '金融'、7);

最後に、我々は、DEPARTMENT表のレコードの次のリストを持っています:

ID DEPT EMP_ID
---------- ---------- ----------
1請求1
2 Engineerin 2
3ファイナンス7

クロスコネクト - CROSS JOINを

第二表の各行の最初のテーブルの各行が一致する(CROSS JOIN)クロスコネクト。 入力された表の列のxとyの両方の場合は、それぞれ、結果表は、x + yの列があります。 クロスコネクト(CROSS JOINは)は非常に大きなテーブルを生成することができるので、あなただけの適切な場合にそれらを使用するときは注意して使用する必要があります。

ここでのクロスコネクト(CROSS JOIN)の構文は次のとおりです。

TABLE1のCROSS SELECT ... FROM table2ののJOIN ...

次のように上記の表に基づき、我々は、(CROSS JOINは)クロスコネクトを書くことができます:

sqliteの> COMPANY CROSS FROM DEPTがDEPARTMENTのJOIN、EMP_ID、名前を選択します。

上記のクエリは次のような結果が生成されます。

EMP_ID NAME DEPT
---------- ---------- ----------
1ポール・ITの請求
2ポールEngineerin
7ポール・ファイナンス
1アレンITの請求
2アレンEngineerin
7アレンファイナンス
1テディITの請求
2テディEngineerin
7テディ・ファイナンス
1マークのIT課金
2マークEngineerin
7マーク・ファイナンス
1デビッド・ITの請求
2デビッドEngineerin
7デイビッド・ファイナンス
1キム・ITの請求
2キム・Engineerin
7キム・ファイナンス
1ジェームズ・ITの請求
2ジェームズEngineerin
7ジェームズ・ファイナンス

エン - INNER JOINは

二つのテーブル(テーブル1とテーブル2)は述語列の値に参加組み合わせた新しい結果表を作成するための内部接続(INNER JOINを)。 クエリは、TABLE1し、各行の各列のテーブル2は、述語マッチングペアに参加満たすすべての行を見つけるために比較されます。 満足すると述語の列の値AとBを結合結果の各一致する行が1行にマージされます。

内部接続は(INNER JOINを)接続の最も一般的なタイプは、デフォルトの接続タイプです。 INNERキーワードはオプションです。

ここでの(INNER JOINを)内部結合の構文は次のとおりです。

SELECT ... FROM TABLE1 [INNER] conditional_expression ON table2ののJOIN ...

冗長性を回避し、短い文言を保つためには、USING式接続(INNER JOINを)条件でのステートメントを使用することができます。 この式は、1つまたは複数の列のリストを指定します。

SELECT ... FROM TABLE1(column1の、...)を使用して、table2ののJOIN ...

自然の接続が(NATURAL JOINを)参加するには... USING似ていますが、各列の二つの表の値と同じ値が自動的にの存在をテストします。

SELECT ... table1のJOIN NATURAL table2のFROM ...

次のように上記の表に基づき、我々は、(INNER JOINは)内部結合を書くことができます。

sqliteの> SELECT EMP_ID、NAME、DEPTはCOMPANY INNER FROM DEPARTMENTを登録しよう
        COMPANY.ID = DEPARTMENT.EMP_ID ON;

上記のクエリは次のような結果が生成されます。

EMP_ID NAME DEPT
---------- ---------- ----------
1ポール・ITの請求
2アレンEngineerin
7ジェームズ・ファイナンス

外部接続 - OUTER JOIN

外部接続(OUTER JOINを)インナージョイン(INNER JOINを)拡張機能です。 SQL標準では、外側の3種類が定義されていますが加わり:LEFT、RIGHT、FULLが、SQLiteはのみ(LEFT OUTER JOINを)外部結合左をサポートしています。

外部接続(OUTER JOINを)NATURALキーワードや表現を使用して、条件および内部接続の方法(INNER JOINを)している同じ、ONの使用を宣言しました。 最初の結果表は、同じ方法で計算されます。 計算はプライマリ接続は、1つまたは2つのテーブルからの外部接続を(OUTER JOINを)完了すると、マージ内の任意のラインに接続されていない、外、NULL値で結合列を結果テーブルに取り付けます。

ここの左外側(LEFT OUTER JOINを)に参加するための構文は次のとおりです。

LEFT OUTER TABLE1 SELECT ... FROM conditional_expression ON table2ののJOIN ...

冗長性を回避し、短い文言を維持するためには、外部結合usingステートメント式(OUTER JOINを)条件を使用することができます。 この式は、1つまたは複数の列のリストを指定します。

SELECT ... LEFT OUTER table1のFROM(column1の、...)を使用して、table2ののJOIN ...

次のように上記の表に基づき、我々は、外部接続を(OUTER JOINを)書くことができます:

sqliteの> SELECT EMP_ID、NAME、DEPT COMPANY LEFT OUTERがDEPARTMENTをJOIN FROM
        COMPANY.ID = DEPARTMENT.EMP_ID ON;

上記のクエリは次のような結果が生成されます。

EMP_ID NAME DEPT
---------- ---------- ----------
1ポール・ITの請求
2アレンEngineerin
            テディ
            マーク
            デイビッド
            キム
7ジェームズ・ファイナンス