..


スポンサーリンク

INNER JOINまたはレコードを取得するための反対は一致しない

マックスボッシによって書かれた記事

誰がSQLの知識が結合であるかを知っている。 私たちのガイドと他の記事で私はJOINとどのようにデータベース内の異なるテーブル間のリレーションシップを作成する方法を説明します。

最も一般的な要件は、正確に位置し、リターンが対応を満たすフィールドが関係している複数のテーブル内で求められてINNER JOIN句を救助、その場合2つのテーブル間のマッチを見つけるためにJOINの楽器によって満たされるJOINインチ

逆にあまり直感的なJOIN内の一致を持っていないフィールドを識別する必要があります

の例をとってみましょう。
あなたが電子商取引のデータベース2つの表のみで構成されてを管理するとします。

  • 顧客 (顧客のマスタデータを含む)
  • 受注 (顧客による注文を含む)
1)すでに注文をした顧客のリストを、まだ何も買っていない顧客の2)リスト:今あなたが顧客の二つの異なるリストを抽出するとします。

最初の要件を満たすために、当然のことながら、非常に簡単です:

 



 SELECT CUSTOMER.FIRST、CUSTOMER.LAST







顧客からの







 INNER JOIN受注







 = clienti.id ordini.id_cliente ON







 ASC CUSTOMER.LAST、ORDER BY

 
とこれまでのところは問題ありません。

しかし、どのように結果を逆にできますか? うーん... 最初に、INNER JOINを使用しますが、LEFTはしかし、左側のテーブルからの結果がとにかく返される、部分的な完全ではなく、一致を、見つけるために参加しません。
これがなければ、レコードは、その後、NULL(SQL NULLの値が存在しないことを識別する"特別な値"の一種として定義されているとして識別(すなわち、報告書では見られない)欠落している(WHERE句を使用して)になります..)

コー​​ドを見てみましょう:

 



 SELECT CUSTOMER.FIRST、CUSTOMER.LAST







顧客からの







受注を左結合







 = clienti.id ordini.id_cliente ON







 NULL ordini.id_clienteはどこにあるの







 ASC CUSTOMER.LAST、ORDER BY

 
結果は、実際には、何かを買ったことがないお客様の名前のリストです。

同じカテゴリの...
E -ラーニング
MS Accessの(上級) MS Accessの(上級)
迅速かつ簡単にデータベースを作成および管理する方法を学びます。 29€から開始。
MySQLの(コース) MySQLの(コース)
オープンソースのデータベースの管理。 39€から。
SQLとデータベース(コース) SQLとデータベース(コース)
リレーショナルデータベースを作成および管理。 39€から。
スポンサーリンク