2017-07-28 1 views
-1

world! MySQLの上の教科書からMySQL:CROSS JOIN予期しない動作

パートは私が読んで:

は「あなたがCROSS JOINを使用して2つのテーブルを結合すると仮定し、結果セットは、結果セットの各行は列の組み合わせであり、両方のテーブルからすべての行が含まれます。 2番目のテーブルに行がある最初のテーブルこの状況は、結合されたテーブル間に関係がない場合に発生します。

私は右の上の手段を理解するのであれば:テーブルは関係CROSS JOINを持っている場合table_twoから各行に0​​からそれぞれの行を結合しないであろう。

しかし、私のテストテーブルには関係(外部キー)があります。

table_oneにはユーザーデータがあり、table_twoには注文データがあります。 table_twoから

user_idtable_one

しかしSELECT * FROM table_one CROSS JOIN table_twoからidに関連しているが、両方のテーブルからそれぞれの行を結合し続けます。どうして?

ありがとうございました!

答えて

2

文書には、が通常の場合、2つの表の間に関係がない場合はCROSS JOINとなります。

CROSS JOINは、関係があるかどうかにかかわらず、常に2つのテーブル/サブクエリのデカルト積を生成します。

テーブルが空の場合、結果セットも空であることに注意してください。