Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   salida de informacion en DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=69411)

lucas05 16-08-2010 22:17:44

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.

Caral 17-08-2010 01:47:28

Hola
DISTINCT
Saludos

lucas05 18-08-2010 03:58:12

OK, gracias.

Saludos

Caral 18-08-2010 04:41:25

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

lucas05 18-08-2010 20:55:04

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.

Caral 18-08-2010 21:03:06

Hola
No te entiendo amigo.
Saludos

lucas05 19-08-2010 04:36:45

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.


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

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