将表与“人员组织”连接,但仅连接与组织关联的第一人

时间:2014-03-04 11:30:25

标签: sql sql-server tsql join

我想连接两个表。一个表是组织,一个是人员,但是我希望MSSQL使用的所有组织只有第一个与组织合作的人。我在sql中尝试“前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) 

我的Schema of Table是我有两个表Person和Org,我试图通过Person.Org_ID和Org.Org_ID连接它们。

1 个答案:

答案 0 :(得分: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

注意:我在记事本中修改了查询,因此可能需要进行一些调整......

祝你好运。