Преобразовать значение в столбец SQL - PullRequest
0 голосов
/ 05 мая 2018

Я использую следующий запрос SQL:

SELECT package_stats.developer, xf_user.username, xf_user.email, xf_user_profile.homepage, xf_user_profile.location, xf_user_profile.about, xf_user_field_value.field_id, xf_user_field_value.field_value 
FROM package_stats, xf_user, xf_user_field_value, xf_user_profile 
WHERE xf_user.username = package_stats.developer AND xf_user_field_value.user_id = xf_user.user_id AND xf_user_profile.user_id = xf_user.user_id

Что тянет примерно так:

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Вы можете использовать CASE

SELECT 
    CASE WHEN xf_user_field_value.field_id = 'Github' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header Github',
    CASE WHEN xf_user_field_value.field_id = 'Repository' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header Repository',
    CASE WHEN xf_user_field_value.field_id = 'UserRole' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header UserRole',
    CASE WHEN xf_user_field_value.field_id = 'aim' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header aim',
    CASE WHEN xf_user_field_value.field_id = 'twitter' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header twitter', 
/*other_col_name...*/
0 голосов
/ 05 мая 2018

Если вам нужен результат в той же строке, вы должны присоединяться к xf_user_field_value каждый раз, когда вам нужна вейл, например:

SELECT package_stats.developer
      , xf_user.username
      , xf_user.email
      , xf_user_profile.homepage
      , xf_user_profile.location
      , xf_user_profile.about
      , v1.field_value as Github
      , v2.field_value as Repository
      , v3.field_value as UserRole
      , v4.field_value as aim
      , v5.field_value as twitter 

FROM package_stats
INNER JOIN  xf_user ON xf_user.username = package_stats.developer
INNER JOIN xf_user_profile  ON xf_user_profile.user_id = xf_user.user_id 
INNER JOIN  xf_user_field_value v1 ON v1.user_id = xf_user.user_id and 'v1.field_id' = 'Github'
INNER JOIN  xf_user_field_value v2 ON v2.user_id = xf_user.user_id and 'v2.field_id' = 'Repository'
INNER JOIN  xf_user_field_value v3 ON v3.user_id = xf_user.user_id and 'v3.field_id' = 'UserRole'
INNER JOIN  xf_user_field_value v4 ON v4.user_id = xf_user.user_id and 'v4.field_id' = 'aim'
INNER JOIN  xf_user_field_value v5 ON v5.user_id = xf_user.user_id and 'v5.field_id' = 'twitter'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...