how to get name from another table with matching id in another table?

后端 未结 2 952
眼角桃花
眼角桃花 2021-01-06 17:34

I am using sql server 2008 r2 with php in my website. I have 2 tables.

1 is for employees.

(int)      (nvarchar)   (nvarchar)

id         name                


        
2条回答
  •  时光取名叫无心
    2021-01-06 17:47

    The content of this doesn't totally answers the question but it will suggest on how you can properly normalize the table in order for theproblem to be simplified.

    This is a Many-to-Many Relationship.

    Employees
    - ID (Primary Key)
    - Name
    - Type
    
    Task
    - ID (Primary Key)
    - Name
    
    Work
    - EmployeeID (Foreign Key)
    - TaskID (Foreign Key)
    

    EMPLOYEE TABLE

    id         name        type
     1         john         2
     2         peter        1
     3         leah         2
     4         frank        1
     5         tang         3
    

    TASK TABLE

     id         name        
      1         task1       
      2         task2       
      3         task3       
      4         task4  
    

    WORK TABLE

    TaskID  EmployeeID
    1           1
    1           3
    2           2
    2           4
    3           1
    3           2
    3           3
    4           4
    

    Query,

    SELECT  t.ID, t.Name,
            STUFF(
            (SELECT ',' + b.Name
            FROM    Work a
                    INNER JOIN Employee b
                        ON a.EmployeeID = b.ID
            WHERE   a.TaskID = t.ID 
            FOR XML PATH (''))
            , 1, 1, '')  AS NamesList
    FROM    Task t
    -- WHERE    ..... -- add additional conditions...
    GROUP   BY t.ID, t.Name
    
    • SQLFiddle Demo

提交回复
热议问题