2017-03-09 9 views
1

現在、組織の連絡先管理システムを維持しており、組織に所属する組織と従業員を追跡しています。自分のデータを整理し、従業員がいないすべての組織を特定するよう求められます。従業員のいないすべての企業を{null}で表示する方法

組織と従業員の2つのテーブルがあります。組織から従業員まで1対1の関係があります。つまり組織は多くの従業員を持ち、従業員は組織に属しています。

機関:id整数名文字列

従業員数:id整数名文字列ORGANIZATION_ID整数

割り当て:それらに接続されているすべての従業員を持っていない企業のリストを生成するSQLクエリを記述します。

私が試してみました:

Select Organisation,Organisation.ID, Organisation.Name 
From Organisation 
Left Join Employees On organisationID = Employees Employees.ID 
order by Organisation,Organisation.name 
+0

こんにちは、私は2つのテーブルを結合する方法を知っているが、私は、従業員のない唯一の企業はヌルフィールドを持つすべてを示すすべての以外の接続されたディスプレイは、私が選択組織を試してみました –

+0

が含まれていることを可能にする方法がわかりませんよ、Organisation.ID、Organisation.Name>組織から>左結合>従業員> On organisationID =従業員Employees.ID>組織、組織構成名順。何か助けをいただければ幸いです。 –

答えて

1

おそらくこの宿題の質問のポイントは、別のデータに1テーブル内のデータを関連付けるための重要なメカニズムの一つである、参加あなたが使用して取得することです。

一般に、SQLには内部結合と外部結合がありますが、内部結合では、結果レコードを生成するためにクエリごとに各テーブルのレコードが存在する必要があります。外部結合では、1つの表に存在するレコードのみが必要です。

Aが参加左(左外部結合)キーワードの左側のテーブルはに参加することを要求する権利は(右外部結合)に参加に対しレコードを有するキーワードの右側のテーブルが有するに参加することを要求します記録。完全外部結合は、左または右のいずれかのレコードを持つことを許可します。

ジョインの一方の側にレコードがない場合、結果のレコードはそのカラム値に対してヌル値を持ちます。したがって、テーブルに非ヌル(主キーなど)のカラムがある場合は、 nullでない値を除外してレコードが存在するかどうかを示します。例えば

(通常は有効であり、それが有効でない場合、それはデザインの問題だこれは、あなたのId列は「nullでない」に定義されていると仮定します):

select 
    * 
    from Organizations 
    left join Employees on 
     Organizations.id = Employees.organization_id 
    where Employees.organization_id is null 
; 
+0

ありがとうございます。 –

+0

あなたは歓迎です...もしあなたがそれを好きなら、upvoteと答えとしてマークしてください! –

1

それは参加クエリに適合organization_idはOrganizationテーブルに存在しますが、Employeeテーブルには存在しません(他の単語ではnull)。

クエリ:従業員が所属していない企業のリストを生成するSQLクエリを作成します。

SELECT O.id, O.Name 
FROM Organization AS O 
LEFT JOIN Employees AS E 
    ON O.id=E.organization_id 
WHERE E.organization_id IS NULL 
+0

ありがとう、これは私が不明だったところです。 –

0

機関:id整数名文字列

従業員数:id整数名文字列ORGANIZATION_ID整数

あなたが従業員なしで組織を取得するには、次のクエリを使用することができます。

SELECT Org.id,Org.name from Organizations Org 
LEFT OUTER JOIN 
Employees Emp on Org.id=Emp.orgnization_id where Emp.id is null; 
関連する問題