Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Augusto

[Resolvido] Agrupamento Múltiplo...

Recommended Posts

Esava voltando do serviço ontem, a pé, com um Sol nervoso na minha cara e me bateu essa curiosidade. Nem vou usar, só queria saber mesmo.

 

A suposta tabela possuiria (já quela realmente não existe) uma coluna que categorizaria os registros.

 

Até onde entendo, essa coluna seria uma chave estrangeira para outra tabela categorias, por exemplo.

 

Daí, na hora do SELECT eu listaria todos os registros de um respectivo usuário (WHERE usuario = X) mas, os dados retornados já viriam organizados.

 

Imagine a tabela assim:

 

+----+------+-----------+
| item | categoria |
+------+-----------+
|   V  |     1     |
|   V  |     2     |
|   V  |     1     |
|   V  |     4     |
|   V  |     3     |
|   V  |     1     |
|   V  |     2     |
|   V  |     1     |
|   V  |     3     |
|   V  |     4     |
+------+-----------+

Coluna categoria bem bagunçada.

 

O SELECT retornaria (aqui já estarei desconsiderando a estrutura de matriz pós linguagem servidor):

 

+----+------+-----------+
| id | item | categoria |
+----+------+-----------+
|  1 |   V  |     1     |
|  2 |   V  |     1     |
|  3 |   V  |     1     |
|  4 |   V  |     1     |
|  5 |   V  |     2     |
|  6 |   V  |     2     |
|  7 |   V  |     3     |
|  8 |   V  |     4     |
|  9 |   V  |     4     |
| 10 |   V  |     4     |
+----+------+-----------+

Deu pra entender? Isso eveitaria, por exemplo, realizar quatro consultas, em quatro tabelas diferentes no caso de estarem separados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi, a categoria muda ?

 

No 1º a categoria do id 5 é 3, já no 2º passa a ser 2 ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estupidez minha. copiei e colei o CODE e alterei só uma parte dele.

 

Editei e removi a primeira coluna, para simular pós processamento server-side.

 

Mas não, tudo continua igual, porém o retorno se daria com todas as categorias agrupadas: primeiro todos os 1, depois todos os 2...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria só um ORDER BY por categoria então ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estúpido2 :lol:

 

Até parece que eu esqueci que o ORDER BY fazia isso. :o

 

Mas também eu perguntei sem testar primeiro, então dá um desconto. <_<

 

Mas então pra não ficar tão vergonhoso pro meu lado ( :blush: ), vamos dificultar um pouquinho.

 

E se eu quisesse encaixar um registro inexistente em determinado offset, "falsificando" a estrutura a ser retornada, entre cada número diferente?

 

Tipo assim:

 

+----+------+-----------+
| id | item | categoria |
+----+------+-----------+
|  1 |   V  |     1     |
|  2 |   V  |     1     |
|  3 |   V  |     1     |
|  4 |   V  |     1     |
|NULL| NULL |    NULL   |
|  5 |   V  |     2     |
|  6 |   V  |     2     |
|NULL| NULL |    NULL   |
|  7 |   V  |     3     |
|NULL| NULL |    NULL   |
|  8 |   V  |     4     |
|  9 |   V  |     4     |
| 10 |   V  |     4     |
+----+------+-----------+

Só pra aprender um pouquinho mais sobre SQL...

 

Eu imagino não ser possível, afinal o banco vai retornar aquilo que ele tem em cadastrado, mas vai que existe algum "truque".

 

Assim diminui-se o processamento do lado servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua última dúvida aí é impossível fazer somente na SQL, TALVEZ na PL criando rowsets pra cada usuário, depois você fazer um loop pra ler cada, mas, daí você come o banco com arroz e feijão =)

 

http://www.php.net/manual/en/pdostatement.nextrowset.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já imaginava que não seria possível, mas ter certeza é sempre melhor. Valeu aí e, desculpem a ignorância, ando passnado por momentos terríveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.