Как показать повторяющиеся элементы базы данных только один раз? - PullRequest
0 голосов
/ 14 января 2019

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

Вот так поступают текущие данные

> =======================                                                                                                                           
> col1  | col2  | col3                                      
> A     | 100   |somedate  |                                            
> A     | 200   |somedate  |                                            
> A     | 300   |somedate  |                                            
> A     | 200   |somedate  |                                            
> B     | 100   |somedate  |                                            
> B     | 17    |somedate  |                                            
> B     | 54    |somedate  |                                            
> B     | 100   |somedate  |                                            
> B     | 100   |somedate  |

Я хочу иметь

> =======================                                                            
> col1  | col2  | col3                                              
> A     | 100   |somedate  |                                            
>       | 200   |somedate  |                                                            
>       | 300   |somedate  |                                                            
>       | 200   |somedate  |                                                             
> B     | 100   |somedate  |                                                      
>       | 17    |somedate  |                                                           
>       | 54    |somedate  |                                                            
>       | 100   |somedate  |                                                            
>       | 100   |somedate  |

Возможно ли это вообще?

Ответы [ 2 ]

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

Добро пожаловать на борт.

Поскольку вы хотите показывать только данные, вероятно, код в каждой строке: «если текущий столбец col1 совпадает с ранее представленным столбцом col1, не показывать его» будет достаточно.

Но если вы хотите использовать данные правильно, я бы предложил более управляемый базой данных ответ, в котором все данные одного и того же столбца попадают в ячейку, а затем вы рассматриваете их как массив (разделяя их запятой):

SELECT col1, GROUP_CONCAT(col2), GROUP_CONCAT(col3)
FROM stack_54178316
GROUP BY col1


| col1 | GROUP_CONCAT(col2) | GROUP_CONCAT(col3)                           |
| ---- | ------------------ | -------------------------------------------- |
| A    | 100,200,300,200    | somedate,somedate,somedate,somedate          |
| B    | 100,17,57,100,100  | somedate,somedate,somedate,somedate,somedate |

Вы можете увидеть результат здесь (просто нажмите PLAY):

https://www.db -fiddle.com / ж / rnL91RcmS6QEE9eULwb4Uu / 0

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

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

Например: вы хотите запросить все 'B' с суммой кредита 100. Запрос будет выглядеть так: select col1, col2, col3 from mytable where col2 = 100 and col1 = 'B'

В структуре входящих данных ваш результат будет в три строки. На вашей желаемой структуре это будет один ряд.

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

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