2017-03-09 70 views
1

您目前正在保持接觸關係管理系統的一個組織,他們跟蹤組織和員工屬於這些組織。要求您清理他們的數據,並確定沒有任何員工的所有組織。如何顯示空{}所有的公司沒有員工

你有兩個表,組織和員工。從組織到員工之間存在一對多的關係。 IE瀏覽器。組織可以有許多員工,員工屬於一個組織。

組織: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

您好,我知道如何加入兩個表,但我不確定如何使顯示器只是沒了員工的企業連接以外的所有顯示所有與空字段包含 –

+0

我曾嘗試選擇組織,Organisation.ID,Organisation.Name>來自組織>左加入>員工>在organisationID = Employees Employees.ID>按組織,Organisation.name排序?任何幫助表示感謝 –

回答

1

這大概作業問題的關鍵是你用加盟,這是在一個表中相關數據到另一個數據的主要機制之一來獲得。

一般SQL有內部和外部連接,不同之處在於內部聯接需要在每個表中的記錄進行查詢,以產生一個結果記錄存在。外部聯接只需要一個表有一個外部記錄。

左連接(左外連接)要求表的關鍵字的左連接有記錄,而右連接(右外連接)要求表的關鍵字的右連接具有記錄。完整的外連接允許向左或向右記錄。

如果聯接的一端沒有記錄,那麼結果記錄的列值將爲空,因此如果表中有非空(如主鍵)列,則可以始終告訴是否有通過過濾掉任何非空值的記錄。

例如(假設你的ID列被定義爲「非空」,它通常是有效的,如果它是無效的它的設計有問題):

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

感謝您的幫助。 –

+0

不客氣...如果你喜歡它,請upvote和標記爲答案! –

1

它適合加入查詢哪裏organization_id將存在於組織表中,但在Employee表中不存在(換句話說,爲空)。

查詢:編寫一個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; 
相關問題