タグ

joinに関するInoHiroのブックマーク (13)

  • 自己結合の使い方

    はじめに SQLが提供する結合演算には、その特徴に応じて内部結合、外部結合、クロス結合などさまざまな名前が与えられています。普通、これらの結合の多くは、異なるテーブルまたはビューを対象として行われます。しかし、SQLは結合が同一のテーブルまたはビューに適用されることを禁止していません。同一のテーブルを対象に行う結合を「自己結合(self join)」と呼びます。自己結合は、使いこなせば非常に便利な技術ですが、動作がイメージしにくいため敬遠されがちです。そこで稿では、この自己結合の便利さを例題を通して学び、その動作を分かりやすく解説します。 自己結合を理解することは、実務上のテクニックを身につける以外に、もう一つ利点があります。それは、集合指向(set-oriented)というSQLの重要な特徴を理解できることです。オブジェクト指向言語が世界をオブジェクトとして表現するように、SQLは世界

    自己結合の使い方
  • ActiveRecordを支える技術 - Arelとは何者なのか?(全5回) その4 | Webシステム開発/教育ソリューションのタイムインターメディア

    ActiveRecordを支える技術 – Arelとは何者なのか?(全5回) その4 #activerecord#Arel#rails#ruby#sql 2014年 05月 06日 nishio product = Arel::Table.new(:products) corporation = Arel::Table.new(:corporations) product_detail = Arel::Table.new(:product_details) product .project('*') .join(corporation) .on(product[:corporation_id].eq(corporation[:id])) .to_sql # "SELECT * FROM `products` # INNER JOIN `corporations` ON `products`

    ActiveRecordを支える技術 - Arelとは何者なのか?(全5回) その4 | Webシステム開発/教育ソリューションのタイムインターメディア
  • HiveのJOINについて – OpenGroove

    HiveのJOINについて、SQLとの違いをポイントに雑記メモ。 Hiveでは INNER JOINJOINでいい どこで読んだか今となっては定かではないが(汗)、そういうことらしい。 HiveでサポートされているJOIN Only equality joins, outer joins, and left semi joins are supported in Hive. Hive does not support join conditions that are not equality conditions as it is very difficult to express such conditions as a map/reduce job. Also, more than two tables can be joined in Hive. ということなので、Hiveでサポー

  • SQL講座 LEFT JOIN とRIGHT JOIN(表の外部結合)

    「1日1問」仕事や勉強に役立つIT知識を充電! リクルートが運営する「ITキャパチャージ」は、最初に会員登録が必要ですが、無料で仕事から情報処理技術者試験まで幅広く活用できるWebサイトです。IT担当者のスキルアップに役立つ情報処理に関する問題を、毎日1問ずつ、メールやサイト上で提供するサービスです。解答ページはIT初心者でも分かる丁寧な解説つきで、サイト上では過去の問題にも挑戦できます。 また、IT用語が調べられるIT単語帳は、説明も詳しく簡単に調べられ、たいへん便利です。ぜひ、会員登録して活用したいサイトです。 LEFT JOINとRIGHT JOIN 表結合を指定するときにWHERE句とINNER JOINのほかにLEFT JOINとRIGHT JOINで表を結合することができる。これは、表の結合したときに指定された左右いずれかの表を優先して表示を行う指定である。 例題1は売上表と顧

  • Join Reordering and Bushy Plans - Simple Talk

    Normally, the query Optimiser won't consider 'bushy' plans, where both operands to a join operator could be intermediate results from other joins. This means that it won't produce good query plans for some types of query. Hints, by themselves won't do it. More powerful magic is required. Hi there. Recently, I’ve been suffering from an existential crisis called “Optimizer rocks! Not!”. Let me try t

    Join Reordering and Bushy Plans - Simple Talk
  • 第7回 LINQ応用編(2/3) - @IT

    join句のグループ化結合 前回の最後に述べたとおり、クエリ式には複数のソースを関連付けるjoin句がある。そして、join句には前回紹介した「内部結合」のほかに、「グループ化結合」と「左外部結合」が存在する。今回はこの2つを見ていこう。 前回の内部結合は、2つのソースに一致する値を見いだした時点で、続きのクエリを発動できた。例えば、「ID番号と商品名を持つソース」と、「ID番号と価格を持つソース」を使い、ID番号で内部結合を行えば、商品名とそれに対応する価格を結び付けることができた。 しかし、この機能は場合によっては十分ではない。同じ商品を異なる店舗で別の価格で販売している場合、商品名に対する価格は複数になってしまう。さらに、価格ごとに「どの店での値段か」という情報も添えねばならない。 このようなケースでは、「内部結合」ではなく「グループ化結合」を使用するとよい。グループ化結合は、joi

  • INNER JOINとCROSS JOINの違い - 豆無日記

    今までJOIN構文をなんとなくで使ってきたので、INNER JOINとCROSS JOINの違いがよくわからないでいる今日この頃。 いまさらながら調べてみた。 CROSS JOIN: ON, USING を指定しない場合、左右のテーブルの直積を返します。 つまり、左右のテーブルにそれぞれ2行のレコード、3行のレコードが格納されている場合、結果は全てのレコードの組合せになり合計 2x3=6 行のレコードになります。 PostgreSQLMySQL では ON, USING を指定すると INNER JOIN と等価になります。 SELECT * FROM table1 CROSS JOIN table2 は次の SQL 文と等価です。 SELECT * FROM table1, table2 また、PostgreSQL, MySQL では SELECT * FROM table1 CR

    INNER JOINとCROSS JOINの違い - 豆無日記
  • SQL の基礎 – JOIN (表結合)の意味の違い|てくめも@ecoop.net

    MySQL / PostgreSQL / Oracle すべてのSQLサーバで基準になっているSQL標準のJOIN(LEFT JOINなど)について、基礎からしっかりまとめてみました。 ■目次 JOINの種類 ON, USING, NATURALによる結合条件指定 複数のJOIN句を組み合わせる 参考リンク ■JOINの種類 SQL 標準では JOIN 句による結合構文は次のような種類があります。 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN CROSS JOIN LEFT JOIN, RIGHT JOIN など、よく使われる構文は上記の省略形です。 ・ただの JOIN は INNER JOIN の省略形。 ・LEFT JOIN は LEFT OUTER JOIN の省略形。 ・RIGHT JOIN は RIGHT OUTER JOIN の省略形。

  • Join (SQL) - Wikipedia

    A Venn diagram representing the full join SQL statement between tables A and B. A join clause in the Structured Query Language (SQL) combines columns from one or more tables into a new table. The operation corresponds to a join operation in relational algebra. Informally, a join stitches two tables and puts on the same row records with matching fields : INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER a

    Join (SQL) - Wikipedia
  • Sort-merge join - Wikipedia

    The sort-merge join (also known as merge join) is a join algorithm and is used in the implementation of a relational database management system. The basic problem of a join algorithm is to find, for each distinct value of the join attribute, the set of tuples in each relation which display that value. The key idea of the sort-merge algorithm is to first sort the relations by the join attribute, so

  • Oracle SQL Join Cardinality

  • SQLチューニングの必須知識を総ざらい(後編)

    連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) 連載目次 前編に引き続き、SQLチューニングを行うために必要な基礎知識として、アクセスするデータ・ブロック数に大きな影響を与える結合方法の種類と、オプティマイザの実行計画の決定に影響を与える統計情報、ヒントについて説明していきます。 結合方法の種類 正規化されたデータベースでは、必要なデータを得るために複数の表からデータを取得、ひも付ける(結合する)処理が数多く発生します。表を結合する方法にはいくつかの種類が

    SQLチューニングの必須知識を総ざらい(後編)
  • 基礎から理解するデータベースのしくみ(4)

    図4●ネスト・ループ結合アルゴリズム。テーブルAの各レコードについてテーブルBのすべてのレコードと比較します データベースの統計情報は定期的に更新する 基的には,ほとんどの場合にコスト・ベース・アプローチに基づくオプティマイザは最適な実行計画を選択してくれると考えてさほど問題はありません。ただ,コスト・ベースの基になるコストの計算は,テーブルのフィールドの値が均等に分布していると仮定して行います。そのため,データの分布に極端な偏りがある場合などは,実際には全件走査のほうが処理は早く終わるのに,インデックス検索を選択してしまうような場合もあり得ます。 コスト・ベース・アプローチを使って効率の良い実行計画を立てるには,定期的に統計情報を更新することが重要なポイントとなります。統計情報は,あくまでもそれを作成したときのデータベースの状態を反映しています。したがって,統計情報を作成した後にデータ

    基礎から理解するデータベースのしくみ(4)
  • 1