結合サンプル

Similar documents
基本サンプル

関数サンプル1

基本サンプル

基本サンプル

関数サンプル2

関数サンプル1

関数サンプル2

SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

関数サンプル2

Microsoft PowerPoint - 講義補助資料2017.pptx

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

プレポスト【問題】

,, create table drop table alter table

1,.,,,., RDBM, SQL. OSS,, SQL,,.

結合演算 ( 復習 ) データベース論 (9) R 社員番号 氏名麻生太郎安部晋三与謝野馨森喜朗 部門経理課営業課総務課営業課 S 部門経理課営業課総務課 電話 問合せ言語と SQL(2) R S 社員番号

: ORDER BY

Microsoft Word - sample_adv-programming.docx

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

PowerPoint プレゼンテーション

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

Basic descriptive statistics

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

H8.6 P

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

Chapter Two



01

3 - 正しい SQL ( 方言を排除した SQL 文の記述方法 )

標準化 補足資料

Microsoft PowerPoint pptx

2 key. 3

csj-report.pdf

BN41.indd

BN46.indd

データベース工学 2011年度資料

この文章に含まれる情報は 公表の日付の時点での Microsoft Corporation の考え方を表しています 市場の変化に応える必要 があるため Microsoft は記載されている内容を約束しているわけではありません この文書の内容は印刷後も正しいとは保障で きません この文章は情報の提供の

研究紀要 第5号

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行



Microsoft Word - 小佐ふるさとづくり計画_koba.doc

広報誌[なか]VOL.158

03.04


エンジョイライフ179号.indd


2 1

23 2


15.06月号.indd

広報誌なか 新春号Vol.160

14.08月号.indd

15.03月号.indd

Œ¢Š‹−Ù26.27“ƒ

2

PowerPoint プレゼンテーション

Webシステム授業資料



第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

データベースS

key

5-1_a-kanaoka_JPNICSecSemi_Phish_Tech_ _3.PDF


「東京こどもネット・ケータイヘルプデスク(こたエール)」平成22年度相談実績の概要


m

PA4

Oracle9i

クエリの作成が楽になるUDF

Chapter Two

結合する親プロパティは 単数です ) そしてこれは Visual Studio が型付けした Data Context を作成する時のデフォルトです 複数化をオフするには データベース接続を追加する時に [Pluralize] オプションのチェックを外してください ( もし 接続が確立している場合は

1

920P-1



広報しもつけp01ol


本文(B5×40)0614三校責了.indd


ONPRESS190


untitled

untitled

untitled

Taro php.jtdc

Microsoft Word - Android_SQLite講座_画面800×1280

DF-200

ODBC Driver for 4D Server

PowerPoint プレゼンテーション

Microsoft PowerPoint - db03-5.ppt

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

BN43.indd

--

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

News from City Hospital

Oracle Database Connect 2017 JPOUG

Transcription:

SQLCompiler for LINQ(C#) のサンプル (LINQPad 用 LINQ to Entities 結合サンプル ) 本サンプルで使用した Visual Studio プロジェクトの pubs データベースの概念モデルは 以下のテーブル名とカラム名が 直接 SQL Sever へクエリする場合と異なるので が補正されています テーブル名が異なるもの employee employees royshed roysheds titleauthor titleauthors カラム名が異なるもの discounts.discount discounts.discount1 titles.title titles.title1 Northwind データベースについては 本サンプルで使用しているテーブル名とカラム名は 概念モデルと一致しています < 一覧表 > 説明リンク InnerJoin(S1-1) 内部結合 ( 等結合 1 個 ) + 内部結合 ( 等結合 1 個 ) Inner(S1-1) InnerJoin(S2-1) クロス結合 + 内部結合 ( 等結合が AND で 2 個 ) Inner(S2-1) InnerJoin(S3-1) 内部結合 ( 等結合が AND で 2 個 ) Inner(S3-1) InnerJoin(S4-1) 内部結合 ( 等結合と不等結合を AND) Inner(S4-1) InnerJoin(S5-1) 内部結合 ( 等結合 1 個 ), グループ化あり Inner(S5-1) LeftJoin(S1-1) 左外部結合 ( 等結合 1 個 ) Left(S1-1) LeftJoin(S2-1) 左外部結合 ( 等結合 1 個 ) + 左外部結合 ( 等結合 1 個 ) Left(S2-1) LeftJoin(S3-1) 内部結合 ( 等結合 1 個 ) + 左外部結合 ( 等結合 1 個 ) Left(S3-1) LeftJoin(S4-1) 左外部結合 ( 等結合 1 個 ) + 内部結合 ( 等結合 1 個 ) Left(S4-1) LeftJoin(S8-1) 左外部結合 ( 等結合 2 個 ) Left(S8-1) RightJoin(S1-1) 右外部結合 ( 等結合 1 個 ) Right(S1-1) FullJoin(S1-1) 完全外部結合 ( 等結合 1 個 ) Full(S1-1) InnerJoin(S1-1).linq 説明内部結合 ( 等結合 1 個 ) + 内部結合 ( 等結合 1 個 ) SELECT e.emp_id, e.job_id, j.job_desc, e.pub_id, p.pub_name FROM employees AS e INNER JOIN publishers AS p ON e.pub_id = p.pub_id INNER JOIN jobs AS j ON e.job_id = j.job_id 1

ORDER BY e.emp_id employees.join(publishers, e => e.pub_id, (e, p) => newe, p.join(jobs, x1 => x1.e.job_id, j => j.job_id, (x1, j) => newx1, j.where(x2 => x2.x1.e.job_id > 10) x2.x1.e.emp_id, x2.x1.e.job_id, x2.j.job_desc, x2.x1.e.pub_id, x2.x1.p.pub_name.orderby(t => t.emp_id); InnerJoin(S2-1).linq 説明クロス結合 + 内部結合 ( 等結合が AND で 2 個 ) SELECT e.emp_id, e.job_id, j.job_desc, e.pub_id, p.pub_name FROM publishers AS p CROSS JOIN jobs AS j INNER JOIN employees AS e ON p.pub_id = e.pub_id AND j.job_id = e.job_id ORDER BY e.emp_id publishers.selectmany(j => jobs, (p, j) => newp, j.join(employees, x1 => newx1.p.pub_id, x1.j.job_id}, e => newe.pub_id, e.job_id}, (x1, e) => newx1, e.where(x2 => x2.e.job_id > 10) x2.e.emp_id, x2.e.job_id, x2.x1.j.job_desc, x2.e.pub_id, x2.x1.p.pub_name.orderby(t => t.emp_id); 2

InnerJoin(S3-1).linq 説明内部結合 ( 等結合が AND で 2 個 ) SELECT t.title_id, r.royalty FROM titles AS t INNER JOIN royscheds AS r ON t.title_id = r.title_id AND t.royalty = r.royalty titles.join(royscheds, t => newt.title_id, t.royalty}, r => newr.title_id, r.royalty}, (t, r) => newt, r x1.t.title_id, x1.r.royalty ; 説明 InnerJoin(S4-1).linq 内部結合 ( 等結合と不等結合を AND) SELECT t.title_id, t.royalty, r.royalty FROM titles AS t INNER JOIN royscheds AS r ON t.title_id = r.title_id AND t.royalty <> r.royalty WHERE r.title_id = 'BU1032' OR r.title_id = 'PC1035' titles.selectmany(r => royscheds, (t, r) => newt, r.where(x1 => x1.t.title_id == x1.r.title_id && x1.t.royalty!= x1.r.royalty).where(x1 => x1.r.title_id == "BU1032" x1.r.title_id == "PC1035") x1.t.title_id, root_alias_2 = x1.t.royalty, root_alias_3 = x1.r.royalty ; 説明 InnerJoin(S5-1).linq 内部結合 ( 等結合 1 個 ), グループ化あり SELECT e.pub_id, COUNT(*) AS num, MAX(e.job_lvl) AS maxlvl FROM employees AS e INNER JOIN jobs AS j 3

ON e.job_id = j.job_id GROUP BY e.pub_id HAVING COUNT(*) > 1 ORDER BY e.pub_id employees.join(jobs, e => e.job_id, j => j.job_id, (e, j) => newe, j.where(x1 => x1.e.job_id > 10).GroupBy(x1 => newgrkey1 = x1.e.pub_id.where(g1 => g1.count() > 1).Select(g1 => new pub_id = g1.key.grkey1, num = g1.count(), maxlvl = g1.max(x1 => x1.e.job_lvl).orderby(t => t.pub_id); LeftJoin(S1-1).linq 説明左外部結合 ( 等結合 1 個 ) SELECT t.title_id, t.title1, t.price, p.pub_name FROM titles AS t LEFT OUTER JOIN publishers AS p ON t.pub_id = p.pub_id titles.groupjoin(publishers, t => t.pub_id, (t, ig1) => newt, ig1 (o1, i1) => newo1, i1 x1.o1.t.title_id, x1.o1.t.title1, x1.o1.t.price, pub_name = (x1.i1.pub_name!= null? x1.i1.pub_name : null) ; LeftJoin(S2-1).linq 説明左外部結合 ( 等結合 1 個 ) + 左外部結合 ( 等結合 1 個 ) 4

SELECT t.title_id, t.title1, t.price, p.pub_name, ta.au_id FROM titles AS t LEFT OUTER JOIN publishers AS p ON t.pub_id = p.pub_id LEFT OUTER JOIN titleauthors AS ta ON t.title_id = ta.title_id titles.groupjoin(publishers, t => t.pub_id, (t, ig1) => newt, ig1 (o1, i1) => newo1, i1.groupjoin(titleauthors, x1 => x1.o1.t.title_id, ta => ta.title_id, (x1, ig2) => newx1, ig2.selectmany(gj => gj.ig2.defaultifempty(), (o2, i2) => newo2, i2 x2.o2.x1.o1.t.title_id, x2.o2.x1.o1.t.title1, x2.o2.x1.o1.t.price, pub_name = (x2.o2.x1.i1.pub_name!= null? x2.o2.x1.i1.pub_name : null), au_id = (x2.i2.au_id!= null? x2.i2.au_id : null) ; LeftJoin(S3-1).linq 説明内部結合 ( 等結合 1 個 ) + 左外部結合 ( 等結合 1 個 ) SELECT e.emp_id, e.job_id, j.job_desc, e.pub_id, p.pub_name FROM employees AS e INNER JOIN publishers AS p ON e.pub_id = p.pub_id LEFT OUTER JOIN jobs AS j ON e.job_id = j.job_id ORDER BY e.emp_id employees.join(publishers, e => e.pub_id, (e, p) => newe, p.groupjoin(jobs, x1 => x1.e.job_id, j => j.job_id, (x1, ig1) => newx1, ig1 (o1, i1) => newo1, i1 5

.Where(x2 => x2.o1.x1.e.job_id > 10) x2.o1.x1.e.emp_id, x2.o1.x1.e.job_id, job_desc = (x2.i1.job_desc!= null? x2.i1.job_desc : null), x2.o1.x1.e.pub_id, x2.o1.x1.p.pub_name.orderby(t => t.emp_id); LeftJoin(S4-1).linq 説明左外部結合 ( 等結合 1 個 ) + 内部結合 ( 等結合 1 個 ) SELECT e.emp_id, e.job_id, j.job_desc, e.pub_id, p.pub_name FROM employees AS e LEFT OUTER JOIN publishers AS p ON e.pub_id = p.pub_id INNER JOIN jobs AS j ON e.job_id = j.job_id ORDER BY e.emp_id employees.groupjoin(publishers, e => e.pub_id, (e, ig1) => newe, ig1 (o1, i1) => newo1, i1.join(jobs, x1 => x1.o1.e.job_id, j => j.job_id, (x1, j) => newx1, j.where(x2 => x2.x1.o1.e.job_id > 10) x2.x1.o1.e.emp_id, x2.x1.o1.e.job_id, x2.j.job_desc, x2.x1.o1.e.pub_id, pub_name = (x2.x1.i1.pub_name!= null? x2.x1.i1.pub_name : null).orderby(t => t.emp_id); LeftJoin(S8-1).linq 説明 左外部結合 ( 等結合 2 個 ) SELECT p.pub_id, p.pub_name, t.title_id, t.title1 6

FROM publishers AS p LEFT OUTER JOIN titles AS t ON p.pub_id = t.pub_id AND t.type = 'business' publishers.groupjoin(titles, p => newp.pub_id, key1 = "business"}, t => newt.pub_id, key1 = t.type}, (p, ig1) => newp, ig1 (o1, i1) => newo1, i1 x1.o1.p.pub_id, x1.o1.p.pub_name, title_id = (x1.i1.title_id!= null? x1.i1.title_id : null), title1 = (x1.i1.title1!= null? x1.i1.title1 : null) ; RightJoin(S1-1).linq 説明右外部結合 ( 等結合 1 個 ) SELECT t.title_id, t.title1, p.pub_id, p.pub_name FROM titles AS t RIGHT OUTER JOIN publishers AS p ON t.pub_id = p.pub_id ORDER BY t.title_id publishers.groupjoin(titles, t => t.pub_id, (p, ig1) => newp, ig1 (o1, i1) => newo1, i1 title_id = (x1.i1title_id!= null? x1.i1.title_id : null), title1 = (x1.i1.title1!= null? x1.i1.title1 : null), x1.o1.p.pub_id, x1.o1.p.pub_name.orderby(t => t.title_id); FullJoin(S1-1) 説明 完全外部結合 ( 等結合 1 個 ) SELECT s.stor_id, s.state, p.pub_id, p.state 7

FROM stores AS s FULL OUTER JOIN publishers AS p ON s.state = p.state ORDER BY s.stor_id stores.groupjoin(publishers, s => s.state, p => p.state, (s, ig1) => news, ig1 (o1, i1) => newo1, i1 x1.o1.s.stor_id, root_alias_2 = x1.o1.s.state, pub_id = (x1.i1.pub_id!= null? x1.i1.pub_id : null), root_alias_4 = (x1.i1.state!= null? x1.i1.state : null).union(publishers.groupjoin(stores, p => p.state, s => s.state, (p, ig2) => newp, ig2.selectmany(gj => gj.ig2.defaultifempty(), (o2, i2) => newo2, i2 stor_id = (x2.i2.stor_id!= null? x2.i2.stor_id : null), root_alias_2 = (x2.i2.state!= null? x2.i2.state : null), x2.o2.p.pub_id, root_alias_4 = x2.o2.p.state ).OrderBy(t => t.stor_id); 8