2014-03-04 34 views
0

我想連接兩個表。一個表是組織,一個是人員,但是所有組織只有MSSQL希望使用的第一個與組織合作的人員。我在sql中嘗試了「top 1」,但我沒有成功。你能否試着給我一個解決方案,以便只有一個第一人蔘與組織?將表與組織與人員連接,但僅連接與組織關聯的第一個人

我想這個解決方案:

SELECT Org.Org_ID, 
     Org.OrgName as 'Nazwa klienta', 
     ISNULL(Org.SIC,'') as 'Nazwa skrócona', 
     ISNULL((Org.Address1+', '+ Org.Zip+ ', ' + Org.City),'') as 'Adres', 
     Person.LastName as 'Nazwisko', 
     Person.FirstName as 'Imię', 
     ISNULL(Org.Industry,'') as 'Branża', 
     ISNULL(Org.Comments,'') as 'Dostarczane wyroby i usługi' 
FROM 
    Org INNER JOIN Person 
    ON Org.Org_ID = Person.Org_ID 
WHERE 
    Person.Org_ID= (
    SELECT MIN(Person.Org_ID) 
    FROM Person 
    WHERE Person.Org_ID = Org.Org_ID 
) and (Org.OrgName IS not NULL) 

我的表的模式是,我有兩個表Person和組織,我試圖通過Person.Org_ID和Org.Org_ID將它們連接。

+1

餐桌人員是否有描述他/她何時開始工作的日期?如果是,那麼你必須添加一個子查詢到選擇MIN(日期)和JOIN使用它的連接語句。 – Ziouas

+0

個人和組織表格已獲得Org.Org_ID的網格值並且Person也可以獲得Person.Org_ID –

+0

因此,您根據最低數量決定首先工作的是哪一個? – Ziouas

回答

1

我不能肯定全部我理解的問題,但下面可能會有幫助:

SELECT Org.Org_ID, 
     Org.OrgName as 'Nazwa klienta', 
     ISNULL(Org.SIC,'') as 'Nazwa skrócona', 
     ISNULL((Org.Address1+', '+ Org.Zip+ ', ' + Org.City),'') as 'Adres', 
     Person.LastName as 'Nazwisko', 
     Person.FirstName as 'Imię', 
     ISNULL(Org.Industry,'') as 'Branża', 
     ISNULL(Org.Comments,'') as 'Dostarczane wyroby i usługi' 
FROM Org 
INNER JOIN (SELECT Org_ID, LastName, FirstName FROM Person 
      WHERE exists (
       SELECT MIN(Person.Org_ID) 
       FROM Person 
       WHERE Person.Org_ID = Org.Org_ID)) p 
    ON Org.Org_ID = p.Org_ID 
WHERE Org.OrgName IS not NULL 

注:我修改在記事本查詢,所以它可能需要一些調整...

祝你好運。