JOIN
自身の表に分析結果がありますか?ON
固有の値を保持していない列はありますか?非キー列のセルフ・ジョイン
私が見た自己結合クエリのほとんどは、PK
カラムで行われます。私は問題に直面しているので、私は何をしているのか分かりません。
など。
SELECT *
FROM Employee a
JOIN Employee b
ON a.Birthdate = b.Birthdate
JOIN
自身の表に分析結果がありますか?ON
固有の値を保持していない列はありますか?非キー列のセルフ・ジョイン
私が見た自己結合クエリのほとんどは、PK
カラムで行われます。私は問題に直面しているので、私は何をしているのか分かりません。
など。
SELECT *
FROM Employee a
JOIN Employee b
ON a.Birthdate = b.Birthdate
あなたのクエリが今書かれているとして、それはあなたの従業員のすべてのペアを返すよう:
私はこれがずっと理にかなっているとは思わない。あなたが達成したいこととEmployeeテーブルの構造は何かの詳細な情報を提供できますか?場合Birthdate
に
がNULL可能である、あなたは、たとえば、同様NULL
値に参加するON
句を変更する必要があります:
SELECT *
FROM Employee a
JOIN Employee b
ON COALESCE(a.Birthdate,'19000101') = COALESCE(b.Birthdate,'19000101')
NULLを記載する必要があります – Serg
SQL INNER JOINを、CROSSは&暗黙結合(カンマ)すべての結果を登録しよう左の引数行と右の引数行(ソース表の別名ごとに名前が変更された列)とのすべての可能な連結のSQL「クロス積」と呼ぶことができます。 INNER JOINの場合、ONは条件を満たさない結果行をすべて削除します。 (INNER JOIN ON 1 = 1はCROSS &暗黙的JOINと同じです。これはINNER JOINをONにすることができない方言の結果でもあります)。これは、テーブル内のNULLの関係にかかわらずです。
this (dialect-independent) answer explaining INNER/CROSS/implicit JOINsを参照してください。それはまた、すべて JOINが "意味をなさない"と説明しています。 (非リレーショナルSQLテーブル(NULLSまたは重複行を持つテーブル)のSQLの意味は複雑であいまいです)もちろん、間違ったクエリを使用しても意味をなさないはずです。
PSユニークな行だけを選択したいと思うかもしれません。あなたはおそらく行を望ましくないでしょうWHERE a.employee = a.employee
。そして列(a.employee、...、b.employee、...)、行(x、...、y、...)と行(y、.. 。、x、...)です。普通の解は、WHERE a. employee <= b.employee
のようなものです。しかし、適切なクエリを書く前に、入力テーブルと結果テーブルの意味を知る必要があります。
_analytical consequences_を定義しますか?あなたは問題に遭遇したと言いますが、それは何ですか? –
@JonathonOgdenこれは私の質問のより精巧なバージョンです:http://stackoverflow.com/questions/38377403/self-join-produces-inconsistent-value-for-last-month – Disasterkid
広義には、あなたは明らかに自分自身にレコードを結合するでしょう。そのため、Aの従業員レコードは、従業員IDなどの追加の一意のキー列を使用せずにB内で自分自身に参加します。このデータで何を分析していますか?それはあなたにもっと具体的な答えを与えるのに役立ちます。 –