0

У меня 2 таблицы, имеющие отношения многие ко многим следующимКак объединить данные из множества таблиц?

Отделы таблица

 
╔═══════════╦════════════════╗ 
║ deptID ║ DeptName ║ 
╠═══════════╬════════════════╣ 
║ 1  ║  abc  ║ 
║ 2  ║  def  ║  
║ 3  ║  ghi  ║ 
╚═══════════╩════════════════╝ 

другой таблицы Критерии

 
╔════════╦════════════════════════╗ 
║ id ║  criteria   ║ 
╠════════╬════════════════════════╣ 
║ 1 ║ number of Employees ║ 
║ 2 ║ status    ║ 
║ 3 ║ nature of products ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
║ . ║ ---     ║ 
╚════════╩════════════════════════╝ 

динамически увеличивается с многие ко многим в отдельной таблице чтобы дать каждому критерию значение для каждого отдела следующим образом:

 
╔════════╦══════╦═════════════════════╗ 
║ DeptID ║ CrID ║  value  ║ 
╠════════╬══════╬═════════════════════╣ 
║ 1  ║ 1 ║ 20     ║ 
║ 1  ║ 2 ║ currently active ║ 
║ 1  ║ 3 ║ mechanical   ║ 
║ 1  ║ . ║ .....    ║ 
║ 1  ║ . ║ .....    ║ 
║ 1  ║ . ║ .....    ║ 
║ 2  ║ 1 ║ 40     ║ 
║ 2  ║ 2 ║ paused for transfer ║ 
║ 2  ║ 3 ║ software   ║ 
║ 2  ║ . ║ .....    ║ 
║ 2  ║ . ║ .....    ║ 
║ 2  ║ . ║ .....    ║ 
║ 3  ║ 1 ║ 50     ║ 
║ 3  ║ 2 ║ heavy duty   ║ 
║ 3  ║ 3 ║ support    ║ 
║ 3  ║ . ║ .....    ║ 
║ 3  ║ . ║ .....    ║ 
║ 3  ║ . ║ .....    ║ 
║  ║  ║      ║ 
║ .  ║ . ║ .....    ║ 
║ .  ║ . ║ .....    ║ 
║ .  ║ . ║ .....    ║ 
║  ║  ║      ║ 
╚════════╩══════╩═════════════════════╝ 

1) как получить этот результат

 
╔═══════╦═════════════╦═════════════════════╦════════════╦═════╦═════╗ 
║ name ║ number of ║  status  ║ nature of ║ ... ║ ... ║ 
║  ║ Employees ║      ║ products ║  ║  ║ 
╠═══════╬═════════════╬═════════════════════╬════════════╬═════╬═════╣ 
║ abc ║  20  ║ currently active ║ mechanical ║ ... ║ ... ║ 
║ def ║  40  ║ paused for transfer ║ software ║ ... ║ ... ║ 
║ ghi ║  50  ║ heavy duty   ║ support ║ ... ║ ... ║ 
║ . ║ ..  ║ ...     ║ ... ... ║  ║  ║ 
║ . ║ ..  ║ ...     ║ ... ... ║  ║  ║ 
║ . ║ ..  ║ ...     ║ ... ... ║  ║  ║ 
╚═══════╩═════════════╩═════════════════════╩════════════╩═════╩═════╝ 

2) как получить одну таблицу следующим образом

 
╔══════╦═══════════════════════════════════════════════════════════════════════════════════╗ 
║ name ║          notes          ║ 
╠══════╬═══════════════════════════════════════════════════════════════════════════════════╣ 
║ abc ║ number of Employees 20 , status currently active , nature of products mechanical ║ 
║ def ║ number of Employees 40 , status paused for transfer , nature of products software ║ 
║ ghi ║ number of Employees 50 , status heavy duty, nature of products support   ║ 
║  ║                     ║ 
║ ... ║ ..................................................        ║ 
║ ... ║ ..................................................        ║ 
║ ... ║ ..................................................        ║ 
║  ║                     ║ 
╚══════╩═══════════════════════════════════════════════════════════════════════════════════╝ 
+3

Является ли это ваше домашнее задание? Что вы пробовали? Кроме того, попробуйте переформатировать свой вопрос. –

+0

извините, я не знал, как отформатировать, но теперь я это сделал .. это система управления ресурсами, в которой я работаю :(и я застрял в этом – Mariam

+0

, можете ли вы поместить все таблицы с их именами и полями ..? ? –

ответ

2

(1)

ли вам нужен этот результат? это требуется использование динамического SQL, как число критериев неизвестно или не фиксируется, так что число столбцов в результате не фиксируется

(2)

SELECT d.DeptName, 
     notes = stuff(n.notes, 1, 1, '') 
FROM Departments d 
     OUTER APPLY 
     (
      SELECT ',' + c.Criteria + ' ' + dc.value 
      FROM DeptCriteria dc 
        INNER JOIN Criteria c  ON dc.CrID = c.id 
      WHERE dc.DeptID = d.deptID 
      ORDER BY c.id 
      FOR XML PATH('') 
     ) n (notes) 
+0

thanx много для вашего ответа, я попробую его, как только я получу на свой компьютер. Для Number (1) да, мне это нужно. Я хочу решить это с помощью crossTab, я думаю, но я не знаю, это crossTab build- в функции в sql-сервере или мне нужна пользовательская функция.? – Mariam

Смежные вопросы