Соединение 2 таблиц и групп значений значений показывает иначе, чем я ожидал - PullRequest
0 голосов
/ 29 января 2020

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

Если я не включил GROUP BY в свой запрос, я получит это:

Form Name : Account Registration  
User Details : 11/27/1987         
Form Name : Account Registration  
User Details : test1@gmail.com    
Form Name : Account Registration  
User Details : username_test      
Form Name : Account Registration  
User Details : 11/27/1999         
Form Name : Account Registration  
User Details : +6582734752        
Form Name : Account Registration  
User Details : Teamname1          
Form Name : Account Registration  
User Details : Team1              
Form Name : Account Registration  
User Details : Teamname2          
Form Name : Account Registration  
User Details : Team2              
Form Name : Event Registration
User Details : +862934829103      
Form Name : Event Registration
User Details : testing@test.com   
Form Name : Christmas Event Registration
User Details : Member1            
Form Name : Christmas Event Registration
User Details : Member2            
Form Name : Christmas Event Registration
User Details : Member3            
Form Name : Christmas Event Registration
User Details : Member4            
Form Name : Christmas Event Registration
User Details : TeamAlpha          
Form Name : Christmas Event Registration
User Details : teamalpha@gmail.com

Но если я включу GROUP BY в свой запрос, я получу это:

Form Name : Account Registration  
User Details : 11/27/1987  
Form Name : Christmas Event Registration
User Details : Member1
Form Name : Event Registration
User Details : +862934829103

Вот чего я хочу достичь:

Form Name : Account Registration
  User Details : 11/27/1987, test1@gmail.com, username_test
  User Details : .....
  User Details : .....
Form Name : Event Registration
  User Details : 11/27/1999, +6582734752
  User Details : .....
  User Details : .....
Form Name : Christmas Event Registration
  User Details : Member1, Member2, Member3, Member4,TeamAlpha, teamalpha@gmail.com
  User Details : .....
  User Details : .....

Пример данных:

CREATE TABLE Table1 (
  `form_id` INTEGER,
  `form_name` VARCHAR(28)
);

INSERT INTO Table1
  (`form_id`, `form_name`)
VALUES
  ('3', 'Account Registration'),
  ('5', 'Event Registration'),
  ('6', 'Christmas Event Registration');

CREATE TABLE Table2 (
  `form_id` INTEGER,
  `submission_id` INTEGER,
  `value` VARCHAR(19)
);

INSERT INTO Table2
  (`form_id`, `submission_id`, `value`)
VALUES
  ('3', '1', '11/27/1987'),
  ('3', '1', 'test1@gmail.com'),
  ('3', '1', 'username_test'),
  ('3', '2', '11/27/1999'),
  ('3', '2', '+6582734752'),
  ('3', '2', 'Teamname1'),
  ('3', '2', 'Team1'),
  ('3', '2', 'Teamname2'),
  ('3', '2', 'Team2'),
  ('5', '3', '+862934829103'),
  ('5', '3', 'testing@test.com'),
  ('6', '4', 'Member1'),
  ('6', '4', 'Member2'),
  ('6', '4', 'Member3'),
  ('6', '4', 'Member4'),
  ('6', '4', 'TeamAlpha'),
  ('6', '4', 'teamalpha@gmail.com');

DEMO на SQLFiddle

SELECT
  f.form_name, s.value
FROM
  Table1 f
JOIN
  Table2 s
    ON f.form_id = s.form_id
GROUP BY
  f.form_name;

Надеюсь, на этот раз я выполнил требования по публикации вопроса. Мне действительно нужна помощь в этом, так как я застрял на этом этапе очень долго, а также я впервые использую функцию соединения.

Заранее спасибо, ребята.

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вам нужен UNION ALL, а не объединение, например:

SELECT result
FROM (
  SELECT form_id, CONCAT('Form Name : ', form_name) result, 1 orderby, 0 submission_id 
  FROM Table1 
  UNION ALL
  SELECT form_id, CONCAT('User Details : ', GROUP_CONCAT(value)), 2, submission_id 
  FROM Table2
  GROUP BY form_id, submission_id
) t
ORDER BY form_id, orderby, submission_id

См. Демоверсию . Результаты:

| result                                                                       |
| ---------------------------------------------------------------------------- |
| Form Name : Account Registration                                             |
| User Details : test1@gmail.com,username_test,11/27/1987                      |
| User Details : Team2,Teamname2,Team1,Teamname1,+6582734752,11/27/1999        |
| Form Name : Event Registration                                               |
| User Details : +862934829103,testing@test.com                                |
| Form Name : Christmas Event Registration                                     |
| User Details : Member1,Member2,Member3,Member4,TeamAlpha,teamalpha@gmail.com |
1 голос
/ 29 января 2020

Попробуйте Group_Concat и другую группу, например

SELECT
  f.form_name, GROUP_CONCAT(s.value)
FROM
  Table1 f
JOIN
  Table2 s
    ON f.form_id = s.form_id
GROUP BY
  s.form_id,s.submission_id,f.form_name;

http://sqlfiddle.com/#! 9 / 0479c0 / 14

Редактировать: Работает также с полной группой

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