Comunidad de diseño web y desarrollo en internet online

¿Es posible obtener este resultado? MySQL

Citar            
MensajeEscrito el 13 Sep 2009 10:19 pm
Buena tarde a la comunidad, tengo una duda talvez puedan ayudarme...

El detalle es este: Tengo esta lista que es el resultado de una seleccion a 2 tablas mas, el SQL es:

Código MySQL :

SELECT tbl_producto.idproducto,nlote FROM tbl_producto LEFT JOIN(
SELECT tmp.idproducto,nlote FROM (SELECT idproducto,nlote FROM tbl_rph GROUP BY idproducto,nlote)tmp
) tmp2 ON tmp2.idproducto=tbl_producto.idproducto


idproducto, nlote
1, '111'
1, '444'
1, '555'
2, '111'
2, '444'
2, '777'
3, '111'
3, '444'
3, '555'

Resulta que me entro curia por saber si puedo lograr el siguiente resultado mediante alguna consulta SQL

idproducto, lotes
1,'111-444-555'
2,'111-444-777'
3,'111-444-555'

Lo que se me ocurrio fue hacer fue:

Código MySQL :

SELECT idproducto,descripcion,(
SELECT nlote FROM tbl_producto LEFT JOIN(
SELECT tmp.idproducto,nlote FROM (SELECT idproducto,nlote FROM tbl_rph GROUP BY idproducto,nlote)tmp
) tmp2 ON tmp2.idproducto=tbl_producto.idproducto) AS lotes FROM tbl_producto


y MySQL se queja diciendo: "Subquery returns more than 1 row " jojojo pense que el resultado seria adaptado automaticamente a una sola fila... :oops:

¿Podria alguien darme una idea de que puedo hacer? gracias por su tiempo, un saludo... ;)

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox
Citar            
MensajeEscrito el 14 Sep 2009 01:15 am

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 14 Sep 2009 08:15 am
La verdad no capto la idea amigo, en verdad en base a esta tabla usando JOINS:

Código MySQL :

idproducto, nlote
1, '111'
1, '444'
1, '555'
2, '111'
2, '444'
2, '777'
3, '111'
3, '444'
3, '555'


puedo lograr esta otra?

Código MySQL :

idproducto, lotes
1,'111-444-555'
2,'111-444-777'
3,'111-444-555'


mi proposito es fusionar los campos nlote y producir un solo campo "lotes" siempre y cuando el idproducto sea el mismo, en verdad no le agarre el hilo a tu tip para poder lograrlo... =}

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox
Citar            
MensajeEscrito el 16 Sep 2009 07:28 am
Bueno aqui ando denuevo, me voy a responder solito: Siii si se puede obtener ese resultado en MySQL; leyendo en la documentacion que trae MySQL Query encontre una funcion que me permite realizar exactamente lo que queria :P aqui se las dejo por si a alguien mas le es util... GROUP_CONCAT()

y la consulta me quedo asi:

Código MySQL :

SELECT idproducto,GROUP_CONCAT(nlote) AS lotes FROM(
SELECT tbl_producto.idproducto,nlote FROM tbl_producto LEFT JOIN(
SELECT tmp.idproducto,nlote FROM (SELECT idproducto,nlote FROM tbl_rph GROUP BY idproducto,nlote)tmp
) tmp2 ON tmp2.idproducto=tbl_producto.idproducto) tmp3 GROUP BY idproducto


¿y el resultado? la hermosa lista que ven acontinuacion ^^ :

Código MySQL :

idproducto, lotes
1, '111,444,555'
2, '111,444,777'
3, '444,555,111'

Un saludo a todos y hasta pronto...

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox
Citar            
MensajeEscrito el 16 Sep 2009 11:11 pm
Hace unos meses me hubieras salvado la vida con eso, es una lástima que no pude encontrar esa función. Ni modo, quedará para futuro.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

mozilla
Citar            
MensajeEscrito el 29 Sep 2009 02:37 pm
Ni modo mi hermano, te salvare la vida en la siguiente oportunidad xD...

De hecho la funcion la encontre por que un amigo necesitaba hacer lo que platicaba arriba y mira que despues me ha servido a mi tambien en un proyecto que estoy haciendo... :)

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.