Я боролся с этим в течение нескольких дней, так извинения, если я слишком запутанных вещи ...Найти «пропущенные» строки через два набор результатов
У меня есть ряд таблиц, которые определяют:
- Группы навыков
- навыки
- навыки в пределах вышеуказанных групп (многие-ко-многим)
- работа роли
- навыки, с теми работы роли (многие-ко-многим)
Структура базы данных выглядит следующим образом:
Мне нужно создать результирующий набор, содержащий следующие данные:
Для всех из ролей работы, показать все навыки в рамках этой работы ролей. Однако также включают навыки в соответствующих группах, которые были не включены в каждую роль (обозначается NULL или любым способом другой).
Для создания таблиц и данных см. Этот рабочий код. SQL Fiddle
Извинения за длину, я сделал много вставок, чтобы создать реалистичный пример.
Обратите внимание, что умение PowerPoint
не добавлено к роли HR Manager
, но добавляются другие навыки из этой же группы. Также обратите внимание, что навык Recruitment Policy
не добавлен в роль Software Manager
, но мне не нужно видеть этот пробел, потому что в этой роли нет других навыков в этой группе.
Результаты, которые я бы направлены на походили бы это (за исключением Супер звезда роль для краткости):
RoleTitle GroupTitle SkillTitle SkillIsInRole
----------------------- -------------------------- --------------------------------------
Software Manager Microsoft Office Excel 1
Software Manager Microsoft Office Word 1
Software Manager Microsoft Office PowerPoint 1
Software Manager Microsoft SQL Server Query Design 1
Software Manager Microsoft SQL Server Stored Procedures 1
Software Manager Microsoft SQL Server Failover Clustering 1
HR Manager Microsoft Office Excel 1
HR Manager Microsoft Office Word 1
HR Manager Microsoft Office PowerPoint NULL <-- not added to role but exists in same group as other used skills
HR Manager HR Recruitment Policy 1
Спасибо огромное. Я попробую утром, когда вернусь на работу. – EvilDr
Потрясающий. Огромное спасибо. Я буду смотреть на ваш веб-сайт «tba», и когда вы ищете новую работу, я буду проверять, позволяют ли наши финансы :-) – EvilDr
Просто скажите, пожалуйста. Ваш запрос выполняет фракцию быстрее, чем у Богдана, но имеет гораздо больше кода. У вас есть информация о том, почему это может быть? Из-за этого я выбрал ваш ответ как правильный. – EvilDr