Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: .:UND3R:. en 25 Noviembre 2015, 12:32 pm



Título: Ayuda con consulta SQL
Publicado por: .:UND3R:. en 25 Noviembre 2015, 12:32 pm
Hola a todos, tengo una tabla más menos de la siguiente forma:

Citar
categoria1, categoria2, categoria3

Los datos que tienen son:
Citar
teconologia, computadores, notebook
tecnologia, computadores, notebook
tecnologia, computadores, ordenador
electrohogar, refrigeracion, freezer

¿Qué es lo que busco?
Mi intención es que en base a esa estructura de la tabla crear una consulta que me retorne una especie de menú:

Citar
tecnologia -> computadores -> notebook
                                         -> ordenador
electrohogar -> refrigeracion -> freezer

la verdad es que no se me ocurre, lo de las flechas es para que se entienda, pero la idea es que solo me devuelvan los nombres, sería la respuesta hacer una especia de tres group by anidados? (no sé si exista lo que digo, pero me arriesgaré jeje)

Muchas gracias por su tiempo


Título: Re: Ayuda con consulta SQL
Publicado por: ivancea96 en 25 Noviembre 2015, 16:31 pm
¿El menú lo quieres en texto plano? Si es así, anidando GROUP BY, y concatenando con GROUP_CONCAT en caso de MySQL podría quedar bien :o


Título: Re: Ayuda con consulta SQL
Publicado por: .:UND3R:. en 25 Noviembre 2015, 21:33 pm
Estoy intentando pero no lo consigo, GROUP_CONCAT, es una maravilla, pero no logro iluminar tal solución a mi problema, sé que me servirá conjunto PHP con explode, saludos.


Título: Re: Ayuda con consulta SQL
Publicado por: ivancea96 en 26 Noviembre 2015, 08:59 am
La representación, no te interesaría hacerla con otro lenguaje? Ya que bueno, sacar una representación así en SQL, parece forzar un poco la cosa xd


Título: Re: Ayuda con consulta SQL
Publicado por: #!drvy en 26 Noviembre 2015, 15:20 pm
Citar
Ya que bueno, sacar una representación así en SQL, parece forzar un poco la cosa xd

Ni tanto.

Creo que saldrías mejor beneficiado pasándolo a a un lenguaje capaz de hacer estas cosas sin complicarse.

Aunque supongo que lo que quieres es algo asi:

Código
  1. CREATE TABLE productos (
  2.  `categoria1` VARCHAR(50),
  3.  `categoria2` VARCHAR(50),
  4.  `categoria3` VARCHAR(50)
  5. );
  6.  
  7. INSERT INTO productos (`categoria1`, `categoria2`, `categoria3`)
  8. VALUES
  9.    ('teconologia','computadores','notebook'),
  10.    ('teconologia','computadores','notebook'),
  11.    ('teconologia','olakase','notebook'),
  12.    ('teconologia','computadores','ordenador'),
  13.    ('electrohogar','refrigeracion','freezer')
  14. ;


Código
  1. SELECT DISTINCT categoria1, categoria2,
  2.  (GROUP_CONCAT(DISTINCT categoria3 SEPARATOR ',')) AS categoria3
  3. FROM productos GROUP BY categoria1, categoria2

Cuyo resultado seria,
Código:
|   categoria1 |    categoria2 |         categoria3 |
|--------------|---------------|--------------------|
| electrohogar | refrigeracion |            freezer |
|  teconologia |  computadores | notebook,ordenador |
|  teconologia |       olakase |           notebook |

Yo lo haría mas bien para que solo recoja los campos distintos,
Código
  1. SELECT DISTINCT categoria1,categoria2,categoria3 FROM productos

Lo cual me devolvería algo así:
Código:
|   categoria1 |    categoria2 | categoria3 |
|--------------|---------------|------------|
|  teconologia |  computadores |   notebook |
|  teconologia |       olakase |   notebook |
|  teconologia |  computadores |  ordenador |
| electrohogar | refrigeracion |    freezer |

Y luego solo seria recogerlo en un array con PHP (por ejemplo) de forma que se solapen las mismas categorías.

No se cual de los dos sera mas eficiente.

Saludos


Título: Re: Ayuda con consulta SQL
Publicado por: .:UND3R:. en 26 Noviembre 2015, 21:27 pm
lo diré sencillo, son unos c#$!!, muchas gracias funciona todo a la perfección  ;-)

muchas gracias por su constante ayuda  ;-)