SQL - Consulta de dos tablas sin concatenar

 
Vista:

Consulta de dos tablas sin concatenar

Publicado por Monica Sierra (3 intervenciones) el 30/07/2011 01:33:04
Buenas tardes tengo una situacion tengo dos tablas documentos y facturas ocupo campos de ambas con el inner join no tengo problema el problema empieza con lo siguiente, cada tabla tiene estos campos ambas tablas las relaciono con el campo ID.
Tabla Documentos
ID clave fecha envio
1 a 01/01/2011 t
2 b 01/02/2011 a
3 j 01/03/2011 f
4 d 01/04/2011 a

Tabla Facturas
ID facturas monto cantidad
1 d12 250 3
1 d13 350 4
2 d14 100 3
3 d15 200 8
1 d16 400 9
3 d17 510 10
2 d18 630 2
4 d19 826 5
1 d20 985 7
4 d21 785 2

Lo que quiero obtener es lo siguiente cuando el ID tabla de documentos e ID tabla facturas sean iguales me arroje lo siguiente en el campo facturas, las facturas separadas por comas.
ID facturas clave fecha envio
1 d12,d13,d16,d20 a 01/01/2011 t
2 d14,d18 b 01/02/2011 a
3 d15,d17 j 01/03/2011 f
4 d19,d21 d 01/04/2011 a

De antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta de dos tablas sin concatenar

Publicado por leonardo_josue (1173 intervenciones) el 01/08/2011 16:09:39
Hola Monica Sierra:

En tu post no mencionas qué manejador de BD estás utilizando, por lo que es casi imposible darte una respuesta puntual, ya que cada manejador implementa maneras muy distintas de hacer lo que quieres...

MySQL por ejemplo posee la función GROUP_CONCAT la cual te permite agrupar distintos registros en uno solo, separándolos por comas o por algún otro caracter:

http://blog.dagrinchi.com/funcion-group_concat-mysql/
http://dev.mysql.com/doc/refman/5.0/es/group-by-functions.html

Lamentablemente esta función no existe en otras BD, aunque algunas implementan técnicas para simular esta función.

SQL Server:

http://www.forosdelweb.com/f87/funcion-sql-server-similar-group_concat-mysql-817105/

http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-ms-sql-server-2005

ORACLE

http://www.tek-tips.com/viewthread.cfm?qid=1318182&page=12

http://oracleabc.com/b/archives/2100

Si utilizas una BD diferente a estas tres sería cuestión que le preguntes a SAN GOOGLE si existe alguna implementación para simular esta funcionalidad.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de dos tablas sin concatenar

Publicado por Monica Sierra (3 intervenciones) el 01/08/2011 17:15:46
Muchas gracias Leo por la información , manejo SQL Server, revisare los links e informo.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta de dos tablas sin concatenar

Publicado por leonardo_josue (1173 intervenciones) el 01/08/2011 22:05:28
También podrías generar tu propia función que haga la concatenación...

Checa también esta liga:

http://www.forosdelweb.com/f87/agrupar-resultados-sql-server-918130/

Ahí se muestra una forma de hacer la concatenación utilizando una especie de recursividad propia de SQL Server, podrías implementar algo parecido.

Prueba y si tienes algún problema lo comentas en el foro para tratar de ayudarte con la implementación.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de dos tablas sin concatenar

Publicado por Monica Sierra (3 intervenciones) el 02/08/2011 21:11:15
Gracias Leo, en un link encontre informacion para hacer la consulta en la tabla de facturas, ya me muestra los campos de esta tabla, el campo facturas me lo genera con comas como lo necesito, falta hacer la union de la tabla documentos, les informare el resultado.

Con este obtuve la informacion de la tabla facturas

SELECT id,monto,cantidad, facturas = replace ((SELECT facturas AS [data()] FROM vt_facturas
WHERE id = a.id ORDER BY id FOR xml path('')), ' ', ' ') FROM vt_facturas a
WHERE id IS NOT NULL GROUP BY id

El ultimo link no pude accesar.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar