Как выбрать одну строку из одной таблицы и несколько строк из другой таблицы вместе? - PullRequest
0 голосов
/ 24 апреля 2019

у меня есть следующая таблица users, которая имеет следующее определение

 id integer 
 Name varchar
 Email varchar 
 Location varchar
 Phone varchar
 Picture varchar
 Status varchar

, и у меня есть другая таблица userskills, которая имеет следующее определение

id integer
 Userid integer
 Skill   integer

нет, я хочу объединить две таблицы ивыбрать одну строку из первой таблицы, в то время как несколько строк из другой таблицы как пользователь могут иметь несколько навыков, но я получаю несколько строк пользовательских данных, но я хочу одну строку?Может кто-нибудь сказать мне, как получить пользователя и его соответствующие навыки в одном ряду?

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете сделать это с PIVOT. Вы должны выбрать навыки из таблицы навыков, а затем объединить их в один ряд. Затем присоединиться к пользователю.

Вот пример с фиксированным количеством умений.

WITH TEMP AS
(
 SELECT 'John' AS U, 'Driver' AS S
 UNION ALL
 SELECT 'John' AS U, 'Plumber' AS S
 UNION ALL
 SELECT 'Jim' AS U, 'Driver' AS S
 UNION ALL
 SELECT 'Tom' AS U, 'Driver' AS S
)

SELECT * FROM 
( SELECT *, U AS DRIVER FROM TEMP ) AS P
PIVOT
(
    COUNT([U])
    FOR S IN ([Driver],[Plumber])
) AS PIV

Если у вас есть переменное число умений, которые вы должны будете сначала запросить, затем преобразуйте это в строку и запустите EXEC для этой строки.

...