Как я могу выбрать данные из таблицы 1 с несколькими атрибутами из таблицы 2 в MySQL? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть две таблицы в MySQL.Первый имеет пользовательские данные, например, второй имеет атрибуты данных.Я хочу выбрать каждого пользователя из таблицы один и получить все атрибуты для него из таблицы два.

например, таблица 1:

| userid | name | | 1 | John | | 2 | Billie |

таблица 2:

| userid | attribute | | 1 | male | | 1 | taxi driver | | 1 | 45 years | | 2 | female | | 2 | clerk |

Итак, я хочу получить результаты MySQL, подобные этим:

| userid | name | attributes | | 1 | John | male, taxi driver, 45 years | | 2 | Billie | female, clerk |

У меня совершенно нет идеи, как объединить эти атрибуты(возможно, даже через запятую).Я также искал здесь, но ничего подобного не нашел.

Можете ли вы помочь, пожалуйста?Спасибо

Ответы [ 2 ]

0 голосов
/ 12 июня 2018
;with SampleDataR as
(
    select *, ROW_NUMBER() over (partition by title, subtitle order by value) rownum
    from test12
)
select distinct title, subtitle,(
    select value 
    + case when s1.rownum = (select MAX(rownum) from SampleDataR where title = s1.title and subtitle = s1.subtitle)
    then '' else ',' end from SampleDataR s1
    where s1.title = s2.title and s1.subtitle = s2.subtitle
    for xml path(''),type).value('(.)[1]','varchar(max)') csvList
    from SampleDataR s2
0 голосов
/ 12 июня 2018

Я думаю, вы можете использовать для этого пользователя GROUP_CONCAT .

SELECT userid, name, GROUP_CONCAT(attribute) as attributes
FROM table1
INNER JOIN table2 ON table1.userid = table2.userid
GROUP BY table2.userid

См. Этот пример SQLFiddle: http://sqlfiddle.com/#!9/fd365d4/6/0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...