を期待していた結果を示して、私は、彼らがどのように動作するかのあなたの心の中で、より明確な区別を描画する目的で、加入について少しお話したいと思います:
INNER JOINは「行のすべての組み合わせ」にはなりません - これはCROSS JOINの機能です
OUTER JOINはすべての値(ソリッドテーブル)を持つテーブルが1つあり、それを他のテーブルに結合する必要がある場合に便利です必ずしもソリッドテーブルに関連する行がないテーブル - これらは疎テーブルです(データの穴)。外部結合には、左、右、および完全の3つの味があります。左と右は同じですが、テーブルの順序に応じて適切なキーワードを選択するだけです。基本的にa left join b
とb right join a
は同じものになります。左/右のキーワードは、あなたが頑丈であるとみなすテーブルを宣言し、スパースとみなします。
ソリッドテーブルとスパーステーブルのペアを内部結合すると、結果の一部の実線が削除され、疎行と関連する実線のみが残ります。外部結合はすべての実線を表し、空のセルは一致する疎行が見つかりません
Natural JOINは、テーブルがどのように関係しているかを明示的に指定しないJOINです。両方のテーブルの名前。ナチュラルジョインを使用しないでください。ほとんどの場合、ちょっと愚かなアイデアや、何時間ものキーストロークを保存する意味のない「最適化」があります。
ここでのクエリは外部JOINを必要としません。あなたは...それはだた会社から提供されている作品を知りたい述べるだけ
SELECT c.* FROM
Provider r
JOIN Provides s ON r.code = s.provider
JOIN Pieces c ON c.code = s.piece
WHERE
R.Name = 'Mattel'
編集: Philipxyは、キーワードは「固体」と「まばらな」数学で特定の意味を持つ合理的なポイントを作っており、私は、ここで数学の特定の側面をドラッグするのではなく、コンセプトを伝えるためにここで使用していることを指摘したいと思います。理解したいと思っているので、私は古典的に学習者が概念を把握するのに簡単な方法を見つけたので、私はこのように物事について議論するつもりだと思ったが、これらは本質的にはデータベースの形あなたが使用している/使用しているキーワードを使用している場合は、あなたが何を言っているのかを理解することができます。特定の方法で理解する。その場合、数学的な意味ではなく、一般的に受け入れられている英語の意味で単に「固体」と「希薄」を使用している場合は、同様の免責事項を追加する必要があります。
あなたの持っているものそれで運賃を試した? – MaxZoom
既存のクエリは表示できますか?あなたは3行を期待していると言いますが、それはなぜ具体的にですか?実際に何も提供していないプロバイダ、または何も提供していない作品を含める場合を除いて、これは内部結合状況のように見えます。 –
こんにちは。 '内部結合 'は、' on'で与えられた条件に制限された 'cross join'行(すべての組み合わせ)です。 'join'は' inner'がなく 'inner join'です。 'where'は' join'の後ろにある 'on'のようなものです。 MySQLは、 '' in''を '' join''を '' on'することなく '' join''を許可します。それは、実装/実行のための処方箋ではなく、結果の*記述です。それが私たちがクエリを書く方法です。 「私はすべての組み合わせを望んでいません」と誤解されています。 PS "私は試しました"& "私が期待した"私たちに何も言わなかった。私は "結果がない"とは "行がない結果"を意味すると思います。はっきりしてください。何が起こったかを示してください。 (あなたの例のように)[mcve] – philipxy