デカルト結合またはクロス結合を使用せずに、2つのテーブルにすべての可能な組み合わせを出力したい。これは可能ですか?デカルトおよびクロス結合の代替
0
A
答えて
1
すべての可能な組み合わせは、デカルト製品の定義です。
2つのテーブルからデカルト積を得るための3つの選択肢があります。 すべての3の選択肢は、最終的にはクロスに帰着参加(と実行計画は、すべての3のために同じである):
作成し、移入したサンプルのテーブル:
CREATE TABLE t1
(
int_col int
)
CREATE TABLE t2
(
char_col char(1)
)
INSERT INTO t1 VALUES
(1), (2), (3), (4), (5), (6), (7), (8), (9), (10)
INSERT INTO t2 VALUES
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('h'), ('i'), ('j'), ('k')
クエリ:
暗黙のクロス参加:
SELECT *
FROM t1, t2
明示的なクロスが参加:
SELECT *
FROM t1
CROSS JOIN t2
クロスが適用されます。
SELECT *
FROM t1
CROSS APPLY t2
すべての結果が同じである:
int_col char_col
1 a
2 a
3 a
4 a
5 a
6 a
7 a
8 a
9 a
10 a
1 b
2 b
3 b
4 b
5 b
6 b
7 b
8 b
9 b
10 b
1 c
2 c
3 c
4 c
5 c
6 c
7 c
8 c
9 c
10 c
1 d
2 d
3 d
4 d
5 d
6 d
7 d
8 d
9 d
10 d
1 e
2 e
3 e
4 e
5 e
6 e
7 e
8 e
9 e
10 e
1 f
2 f
3 f
4 f
5 f
6 f
7 f
8 f
9 f
10 f
1 h
2 h
3 h
4 h
5 h
6 h
7 h
8 h
9 h
10 h
1 i
2 i
3 i
4 i
5 i
6 i
7 i
8 i
9 i
10 i
1 j
2 j
3 j
4 j
5 j
6 j
7 j
8 j
9 j
10 j
1 k
2 k
3 k
4 k
5 k
6 k
7 k
8 k
9 k
10 k
1
私は出力にデカルトを使用しない2つのテーブル内のすべての可能な組み合わせをしたいが参加したり、クロスが参加します。これは可能ですか?
厳密な定義レベルでは、できません。どうして?デカルト積の定義は、まさにあなたが記述しているものです(「デカルト結合」という用語はよく使われませんが、「デカルト積」と同義です)。したがって、使用する方法はこの機能を実装することです。通常、この機能はCROSS JOIN
を使用して実装されています(まれに、,
を使用することを認めます)。
「+ 1
を実行せずに番号に1を加える」と言う場合があります。他の誰かが来て、 "+ 2 - 1
を使う"と言う。それは1つを追加することですが、1つではなく2つの操作を使用するだけです。あなたはデカルト積をしたいが、あなたはCROSS JOIN
演算子を使用したくない場合は
は、最も一般的な方法はON 1=1
使用しています:
select t1.*, t2.*
from t1 join
t2
on 1 = 1;
関連する問題
- 1. H2データベース - Rank()およびRow_Num()の代替
- 2. C++ - autoおよびdecltypeの代替品
- 3. リポジトリパターンの並べ替え、ページングおよび緩やかに結合
- 4. 結合およびイベントハンドラ - イベントオブジェクト
- 5. PL/SQLデカルト結合
- 6. デカルトのdata.tableへの結合
- 7. 1 = 1とクロス結合の結合
- 8. 結合WPF、およびDataContextの
- 9. スレッドクラスのスリープ、降伏および結合
- 10. 結合および非結合MethodeのエラーのPython
- 11. IndexからStartおよびEndingタグまでのString.subSequenceの代替
- 12. RDP、ICAおよび類似のプロトコルの無料代替手段
- 13. C#およびオープンソースでのSharePointの代替
- 14. MySql内部結合および除外
- 15. WPFおよびMVVM。結合事象
- 16. SQL内部結合およびカウント
- 17. 代替Y結合子の定義
- 18. "RL-ARMライブラリ"および "CMSISライブラリ"の代替品
- 19. 独立型カスタム型マッピング/ javax.persistence.x org.hibernate.annotations.Typeおよびorg.hibernate.annotations.TypeDefの代替
- 20. IE代替Windows Embedded Compact 7 - 最新のjQueryおよびJavascriptサポート
- 21. Excel 2010 vbaマクロの代替ワイルドカード文字(?および*)
- 22. SQL Server - PWDEncryptおよびPWDCompareの代替実装
- 23. 関係代数クロス積と自然結合
- 24. SQLクエリー、挿入、結合および結合
- 25. 条件付きクロス結合
- 26. ASP.NET MVC用のCSSおよびJavaScriptファイルの結合、最小化、およびgzip
- 27. Redirct www2、非WWW、および代替ドメインwww.domain.com
- 28. アップル、iTunesでアプリ内購入および代替
- 29. 代替構成ヒューリスティックおよびローカル検索フェーズ
- 30. Assembla Redmine JIRA Zoho Yodizレビューおよび/または代替
すべての可能な組み合わせが** **デカルト積の定義です。明示的なクロス結合または暗黙的な結合を使用できますが、結果は同じになります。 –
----------なぜですか? ---------- –
クロス結合を使用せずにすべての組み合わせを取得できますか?誰かによると、その高すぎる。 – user7414008