Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-08-2010
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
salida de informacion en DBGrid

Hola, estoy utilizando Delphi 7 y MySQL, quiero realizar una consulta sql en un ADOQuery para mostrar la informacion contenida de tres tablas en un DBGrid.
Las tablas que utilizo son las siguientes (lo que esta en verde son datos que contienen las tablas, los agregue para hacer que el ejemplo sea mas entendible)
Tabla libro
id_libro , titulo , genero
1 , Ingenieria y Derecho , Derecho

Tabla libro_autor
id_libro , id_autor
1 , 5
1 , 6

Tabla autor
id_autor , apellido , nombre
5 , Casella , Jose
6 , Faro , Miguel

Cuando realizo la siguiente consulta:
SELECT titulo,genero,CONCAT(nombre,apellido)
FROM libro JOIN libro_autor ON libro.id_libro = libro_autor.id_libro
JOIN autor ON libro_autor.id_autor = autor.id_autor

Trae los datos que quiero, pero aparece un pequeño problema y es que al mostrar los registros en el DBGrid hay algunos que se repiten por el hecho de que hay libros que tienen mas de un autor.

Así es como aparecen los datos en el DBGrid:
Ingenieria y Derecho - Derecho - Jose Casella
Ingenieria y Derecho - Derecho - Miguel Faro

Mi pregunta es como deberia ser la consulta sql para que los datos aparecieran así en el DBGrid?
Ingenieria y Derecho - Derecho - Jose Casella, Miguel Faro

Espero haber sido claro y gracias por su atención.
Responder Con Cita
  #2  
Antiguo 17-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
DISTINCT
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 18-08-2010
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
OK, gracias.

Saludos
Responder Con Cita
  #4  
Antiguo 18-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por si aun con tu amabilidad por darme las gracias pudiera quedar alguna duda.
Código SQL [-]
SELECT DISTINCT titulo, genero, CONCAT(nombre, apellido) AS Descripcion
FROM libro JOIN libro_autor ON libro.id_libro = libro_autor.id_libro
JOIN autor ON libro_autor.id_autor = autor.id_autor
GROUP BY titulo, genero, CONCAT(nombre, apellido)
Aunque tengo algunas dudas del uso que le das al JOIN en este caso.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 18-08-2010
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola Caral, gracias por tu explicaion más detallada.

Con respecto al join lo utilizo para poder conectar tres tablas, ya que la información que quiero mostrar se encuentra en esas tres tablas.

Consulta, para concatenar dos campos de un mismo registro y colocar el resultado en un tercer campo utilizo concat(campo1,campo2).
Pero si quiero concatenar dos campos de dos registros diferentes y poner el resultado en un tercer campo como puedo hacer?. Es posible?

Gracias y saludos.
Responder Con Cita
  #6  
Antiguo 18-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No te entiendo amigo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 19-08-2010
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola Caral, perdón por no haber sido claro, voy a explicarlo con un ejemplo haber si así se entiende mejor.

Tengo una tabla (en MySQL) llamada empleados que tiene los siguientes campos: id_empleado, apellido, nombre, observaciones.

Para mostrar la información de ese tabla en un DBGrid utilizo un ADOQuery al cual le agrego la siguiente sentencia sql: select * from empleados.

Al ejecutarlo muestra la informacion de la siguiente forma (ejemplo):
id_empleado apellido nombre observaciones
1 Perez Carlos observacion1
1 Perez Carlos observacion2

Como puedes ver aparecen dos registros, mi intención (si se puede) es mostrar un solo registro con los campos de observaciones concatenados, de modo que se vea asi:
id_empleado apellido nombre observaciones
1 Perez Carlos observacion1,observacion2


Gracias y saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mostrar en un DBGrid información de dos tablas distintas kasper SQL 2 26-02-2010 13:04:56
Pasar informacion de un dbgrid a otro schaka Conexión con bases de datos 3 11-02-2008 10:15:32
Copiar Informacion De Un EDIT A Un DBGrid Ericklsca Conexión con bases de datos 1 11-07-2006 07:35:46
Informacion de DBGrid como Hint el_enigma1 OOP 6 11-08-2005 16:07:40
Actualizar información en un DBGRid tannyk Varios 4 02-06-2005 00:48:58


La franja horaria es GMT +2. Ahora son las 22:15:01.


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
Copyright 1996-2007 Club Delphi