首页 文章

SQL内连接有3个表吗?

提问于
浏览
265

我想在一个视图中加入3个表;这是情况:

我有一张表格,其中包含申请在大学校园住宿的学生的信息 . 我有另一张 table ,列出了每个学生的霍尔偏好(其中3个) . 但是这些首选项中的每一个仅仅是ID号,并且ID号在第三表中具有相应的Hall Name(没有设计该数据库......) .

差不多,我在 table 上有他们的喜好和他们的信息INNER JOIN,结果是......

John Doe | 923423 | Incoming Student | 005

其中005是HallID . 所以现在我想将HallID与第三个表匹配,其中该表包含HallID和HallName .

所以,我希望我的结果像......

John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

EDIT 这是我现在拥有的

SELECT
  s.StudentID, s.FName, 
  s.LName, s.Gender, s.BirthDate, s.Email, 
  r.HallPref1, r.HallPref2, r.HallPref3
FROM
  dbo.StudentSignUp AS s 
  INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
  INNER JOIN HallData.dbo.Halls AS h 
    ON r.HallPref1 = h.HallID

11 回答

  • 0

    有很多回复,但总的教训似乎是你可以在where子句中使用多个JOINS;还有techonthenet.com(我的老板向我推荐,这就是我发现它的方式)如果你有另外一个问题并且你只想尝试解决它,那么它有很好的SQL教程 .

    SELECT table1.column1
    FROM table1
    WHERE table1 > 0 (or whatever you want to specify)
    INNER JOIN table1 
    ON table1.column1 = table2.column1
    
  • 2
    select empid,empname,managename,[Management ],cityname  
    from employees inner join Managment  
    on employees.manageid = Managment.ManageId     
    inner join CITY on employees.Cityid=CITY.CityId
    
    
    id name  managename  managment  cityname
    ----------------------------------------
    1  islam   hamza       it        cairo
    
  • 37

    此查询将适合您

    Select b.id as 'id', u.id as 'freelancer_id', u.name as 
    'free_lancer_name', p.user_id as 'project_owner', b.price as 
    'bid_price', b.number_of_days as 'days' from User u, Project p, Bid b 
    where b.user_id = u.id and b.project_id = p.id
    
  • 4

    如果您有3个表加入相同的 ID 表,我认为它会是这样的:

    SELECT * FROM table1 a
    JOIN table2 b ON a.ID = b.ID
    JOIN table3 c ON a.ID = c.ID
    

    只需将 * 替换为您希望从表中获取的内容 .

  • 420
    SELECT * 
    FROM 
        PersonAddress a, 
        Person b,
        PersonAdmin c
    WHERE a.addressid LIKE '97%' 
        AND b.lastname LIKE 'test%'
        AND b.genderid IS NOT NULL
        AND a.partyid = c.partyid 
        AND b.partyid = c.partyid;
    
  • 32
    SELECT table1.col,table2.col,table3.col 
    FROM table1 
    INNER JOIN 
    (table2 INNER JOIN table3 
    ON table3.id=table2.id) 
    ON table1.id(f-key)=table2.id
    AND //add any additional filters HERE
    
  • 0
    SELECT 
    A.P_NAME AS [INDIVIDUAL NAME],B.F_DETAIL AS [INDIVIDUAL FEATURE],C.PL_PLACE AS [INDIVIDUAL LOCATION]
    FROM 
    [dbo].[PEOPLE] A
    INNER JOIN 
    [dbo].[FEATURE] B ON A.P_FEATURE = B.F_ID
    INNER JOIN 
    [dbo].[PEOPLE_LOCATION] C ON A.P_LOCATION = C.PL_ID
    
  • -6
    SELECT column_Name1,column_name2,......
      From tbl_name1,tbl_name2,tbl_name3
      where tbl_name1.column_name = tbl_name2.column_name 
      and tbl_name2.column_name = tbl_name3.column_name
    
  • 0

    您可以执行以下操作(我猜对表字段等)

    SELECT s.studentname
        , s.studentid
        , s.studentdesc
        , h.hallname
    FROM students s
    INNER JOIN hallprefs hp
        on s.studentid = hp.studentid
    INNER JOIN halls h
        on hp.hallid = h.hallid
    

    编辑:

    根据您对多个大厅的要求,您可以这样做 . 您只需多次加入您的Hall table ,每个房间的首选项:

    SELECT     s.StudentID
        , s.FName
        , s.LName
        , s.Gender
        , s.BirthDate
        , s.Email
        , r.HallPref1
        , h1.hallName as Pref1HallName
        , r.HallPref2 
        , h2.hallName as Pref2HallName
        , r.HallPref3
        , h3.hallName as Pref3HallName
    FROM  dbo.StudentSignUp AS s 
    INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
        ON s.StudentID = r.StudentID 
    INNER JOIN HallData.dbo.Halls AS h1 
        ON r.HallPref1 = h1.HallID
    INNER JOIN HallData.dbo.Halls AS h2
        ON r.HallPref2 = h2.HallID
    INNER JOIN HallData.dbo.Halls AS h3
        ON r.HallPref3 = h3.HallID
    
  • 0

    您只需要第二个内部联接,将您现在拥有的 ID Number 链接到第三个表的 ID Number . 之后,将 ID Number 替换为 Hall Name 和voilá:)

  • 0

    这是对具有相同id的join 3表的正确查询**

    select a.empname,a.empsalary,b.workstatus,b.bonus,c.dateofbirth from employee a, Report b,birth c where a.empid=b.empid and a.empid=c.empid and b.empid='103';
    

    员工第一桌 . 报告第二张表 . 出生第三表

相关问题