как разбить данные в таблице первого столбца, которая используется для объединения других таблиц для получения других данных - PullRequest
0 голосов
/ 23 января 2019

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

Пример

tabel 1

no       description           code 
1          one                  A
1          two                  B
2          three                C

tabel 2

no         code              codeall
1          ABB                null
1          BBC                null
2          ABC                null

Я хочу быть таким

tabel 2

no            code                  codeall
1               ABB                one, two, two
1               BBC                two, two,three
2               ABC                one,two,three

Как мне изменить этот запрос

UPDATE tabel1 tb1 JOIN tabel2 tb2 ON tb1.no = tb2.no 
SET tb2.codeall = ... where tb2.no = 1

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Вам нужно агрегировать перед выполнением JOIN:

UPDATE tabel2 tb2 JOIN
       (SELECT tb1.no, GROUP_CONCAT(description) as codeall
        FROM tabel1 tb1
        GROUP BY tb1.no
       ) tb1
       ON tb1.no = tb2.no 
    SET tb2.codeall = tb1.codeall
    WHERE tb2.no = 1;

Для повышения производительности следует выполнить фильтрацию перед агрегированием:

UPDATE tabel2 tb2 JOIN
       (SELECT tb1.no, GROUP_CONCAT(description) as codeall
        FROM tabel1 tb1
        WHERE tb1.no = 1
        GROUP BY tb1.no
       ) tb1
       ON tb1.no = tb2.no 
    SET tb2.codeall = tb1.codeall
    WHERE tb2.no = 1;
0 голосов
/ 23 января 2019
tabel 1          
 no     description           code 
 1          39                  4
 1          64                  S
 1          70                  Z

tabel 2          
no        code           codeall
1          4SZ            null

become
tabel 2          
no            code                  codeall
1              4SZ             68,69,70,48,67,66,65 it should (39,64,70)

я попробовал запрос

0 голосов
/ 23 января 2019

Вы можете использовать GROUP_CONCAT что-то вроде этого

   UPDATE     
   tabel2 tb2,
    (select tabel1.no, GROUP_CONCAT(tabel1.code) as 'data' from tabel1 group by tabel1.no) as data
SET 
    tb2.codeall = data.data
WHERE
    tb2.no = 1 and data.no = tb2.no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...