Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   consulta....... (https://www.clubdelphi.com/foros/showthread.php?t=36288)

kejos 06-10-2006 23:55:31

consulta.......
 
Hola a todos!!!!!!
tengo una pequeña duda....
Yo tengo una consulta digamos de libros cierto cada libro esta relacionado con materias entonces un libro puede estar relacionadocon varias materias lo que yo quiero es que cuando ya haga una consulta de libros y materias si el libro esta relacionado con varias materias no me salga el numero de veces que esta relacionado con alguna materia sino que me salga el libro una vez y en un campo las materias que esten relacionadas con el libro.
Alguien me puede dar una idea de cómo hacer esto? teniendo en cuenta que es una vista que estoy haciendo para abrirla desde excel.
muchas gracias por toda la colaboración que puedan brindarme:confused:

subzero 07-10-2006 01:32:31

Bueno creo que si colocas DISTINCT en tu consulta puede que se solucione, por ejemplo:

Código:

select distinct campo(s)
from tabla(s)
where condicion(es)
order by campo(s)

Prueba, un saludo.

kejos 09-10-2006 14:46:21

Hola!!!!
Ya lo intente de esta manera pero de igual manera me siguien saliendo varios libros según el núemro de materias que tenga relacionados....
GRacias por tu respuuesta

Lepe 09-10-2006 15:12:06

Cita:

que me salga el libro una vez y en un campo las materias que esten relacionadas con el libro.
Podrías hacerlo con un procedimiento almacenado, pero creo que es una chapucilla, amén de dificultar más las cosas. La idea es que el procedimiento almacenado seleccione los campos de la tabla libros y devuelva un campo adicional de tipo texto, en ese campo, concatenas el nombre de todas las materias a las que pertenezca dicho libro. Los inconvenientes son obvios, si despues necesitas esas materia para otros fines, será un dolor de cabeza trocear ese campo para sacar individualmente las materias.

Si sql server permite el uso de arrays en la definición de una vista, podría ser una solución, aunque no he trabajado ni con sql server ni con arrays así definidas.

Saludos

subzero 10-10-2006 14:54:04

Por lo que he notado deseas hacer algo como:
______________________________________
|Libro | Materia1 | Materia2 | ... | MateriaN |
|_____________________________________|
....
....
....

Que te parece si nos cuentas en que motor tienes la BD, y en que versión de Delphi estas desarrollando

edgusano 10-10-2006 16:32:33

Puede que este equivocado pero lo qe buscas puedes encontrar informacion buscando por pivotear tablas. Pivot tables en Sql Server. dale una busqueda en google que te arrojara unos cuantos resultados puede que sea lo que necesitas.

kejos 10-10-2006 16:34:17

Hola!!!!
mi motor de BD es SQL server 2000 y no tiene que ver con la aplicación porque lo que necesito es hacer la vista para llevarla a excel.

muchas gracias

__hector 10-10-2006 21:13:51

Creo que la solucion estaria en hacer una subconsulta (en vez de join) para traer el detalle del campo que contiene varios registros, y usar la funcion COALESCE para concatenar el resultset de cada subconsulta en un solo registro, quizas separado por comas.

Busca mas informacion de esta funcion en Google o los books online.


La franja horaria es GMT +2. Ahora son las 23:39:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi