Ayuda con consulta SQL

Iniciado por .:UND3R:., 25 Noviembre 2015, 12:32 PM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

Hola a todos, tengo una tabla más menos de la siguiente forma:

Citarcategoria1, categoria2, categoria3

Los datos que tienen son:
Citarteconologia, 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ú:

Citartecnologia -> 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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

ivancea96

¿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

.:UND3R:.

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.

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

ivancea96

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

#!drvy

#4
CitarYa 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 (sql) [Seleccionar]
CREATE TABLE productos (
 `categoria1` varchar(50),
 `categoria2` varchar(50),
 `categoria3` varchar(50)
);

INSERT INTO productos (`categoria1`, `categoria2`, `categoria3`)
VALUES
   ('teconologia','computadores','notebook'),
   ('teconologia','computadores','notebook'),
   ('teconologia','olakase','notebook'),
   ('teconologia','computadores','ordenador'),
   ('electrohogar','refrigeracion','freezer')
;



Código (sql) [Seleccionar]
SELECT DISTINCT categoria1, categoria2,
  (GROUP_CONCAT(DISTINCT categoria3 SEPARATOR ',')) AS categoria3
FROM productos GROUP BY categoria1, categoria2


Cuyo resultado seria,
|   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 (sql) [Seleccionar]
SELECT DISTINCT categoria1,categoria2,categoria3 FROM productos

Lo cual me devolvería algo así:
|   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

.:UND3R:.

lo diré sencillo, son unos c#$!!, muchas gracias funciona todo a la perfección  ;-)

muchas gracias por su constante ayuda  ;-)

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)