Eu não tenho certeza do que isso é chamado, mas acontece o tempo todo que você obtém um conjunto de resultados como:
(id,name,age,favorite)
0,John Smith,21,Pepperoni
1,John Smith,21,Ham
2,John Smith,21,Olives
3,John Doe,54,Tomatoes
4,John Doe,54,Potatoes
Agora, quando você está iterando sobre esse conjunto de resultados, como concatear a última coluna em linhas que têm semelhante name
e age
s? Para obter um resultado como John Smith,21,"Pepperoni,Ham,Olives"
. E qual é essa ação chamada em geral? Eu estou usando o JDBC-MySQL se isso é importante.
obrigado
Respostas:
2 para resposta № 1Esta ação pode ser feita com o GROUP_CONCAT no MySQL:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
SELECT name, age, GROUP_CONCAT(favorite SEPARATOR ",")
FROM myTable
GROUP BY name, age
Tenha cuidado, o GROUP_CONCAT é apenas no MySQL e não em um SQL padrão.
Você não poderia fazer isso em outro DBMS com uma consulta.
2 para resposta № 2
No MySQL, você poderia fazer isso com group_concat
:
select
id,
name,
age,
group_concat(favorite separator ",")
from
YourTable
group by
id,
name,
age
1 para resposta № 3
Seus dados são normalizado? Se estiver e seus favoritos estiverem armazenados em uma tabela separada, use GROUP_CONCAT para concatená-los.
1 para resposta № 4
Simplesmente:
select name, age, group_concat(favorite) group by name, age;
Você pode querer group_concat(distinct favorite)
, ou para especificar uma ordem por. (vírgula é o separador padrão.)
Os valores de group_concat serão truncados em um comprimento determinado da variável do servidor, mas isso não parece ser um problema neste caso.