Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Realizar una consulta de varias tablas y que no se repitan los registros (https://www.clubdelphi.com/foros/showthread.php?t=64945)

maravert 11-11-2009 02:52:47

Realizar una consulta de varias tablas y que no se repitan los registros
 
Hola a todos:

Tengo las siguientes tablas

Tabla Cobros


Código SQL [-]
CREATE TABLE `cobros` (
  `id_cobros` int(11) NOT NULL auto_increment,
  `Id_alumno` int(11) NOT NULL,
  `id_cuenta` int(11) NOT NULL,
  `id_concepto` int(11) NOT NULL,
  `monto` float NOT NULL,
  `fecha` text NOT NULL,
  `fecha_registro` text NOT NULL,
  `referencia` varchar(50) default NULL,
  PRIMARY KEY  (`id_cobros`),
  KEY `Id_alumno` (`Id_alumno`,`id_cuenta`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;




Tabla Conceptos


Código SQL [-]
CREATE TABLE `conceptos` (
  `id_concepto` int(11) NOT NULL auto_increment,
  `descripcion` varchar(40) NOT NULL,
  PRIMARY KEY  (`id_concepto`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;




y La tabla Alumnos


Código SQL [-]
CREATE TABLE `alumnos` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` varchar(50) NOT NULL default '',
  `apellidos` varchar(40) default NULL,
  .....


En la tabla cobros me almacena algo asi

1, 16, 3, 1, 10500, '09/11/2009', '09/11/2009',NULL
2, 29, 3, 1, 0, '09/11/2009', '09/11/2009', NULL);
3, 19, 3, 1, 25000, '09/11/2009', '09/11/2009', NULL);
4, 19, 3, 1, 25000, '09/11/2009', '09/11/2009', NULL);
5, 8, 3, 2, 333, '09/11/2009', '09/11/2009', NULL);
6, 14, 3, 1, 4, '09/11/2009', '09/11/2009', NULL);
7, 20, 5, 1, 4200, '09/11/2009', '09/11/2009', '999');
8, 12, 3, 1, 77777, '09/11/2009', '09/11/2009', NULL);


lo que deseo es sacar una consulta asi

Juan Perez , Colegiatura, 10500, etc
Pablo Marmol, Inscripcion. 10500, etc


Realizo la siguiente consulta en MysQl, pero me repite los registros.


Código SQL [-]
SELECT cobros.id_concepto, cobros.monto, cobros.fecha, cobros.referencia, cobros.Id_alumno, alumnos.id, 
alumnos.nombre, alumnos.apellidos, conceptos.descripcion
FROM cobros, alumnos, conceptos
WHERE cobros.fecha >= f1 OR cobros.fecha <= f2




f1 y f2 son rangos de fechas.

En conclusion lo que quiero es obtener de la tabla cobros los resultados, pero que se sustituya el valor de cobros.id_concepto, por el que esta en la tabla conceptos.Id_concepto y en donde esta cobros.Id_alumno por el valor que esta en alumnos.nombre

Ojala me puedan ayudar porque ya llevo semanas y no le hayo

Gracias de antemano

Maravert

HenryAraniva 11-11-2009 05:24:50

según lo que te entendi prueba la siguiente y me dices si es algo así lo que necesitas.
Si no talvez puedes ampliar un poco mas tu problema y pone los datos que te genera tu consulta y los que quieres obtener.

SELECT T1.id_concepto, T1.monto, T1.fecha, T1.referencia, T1.Id_alumno, T2.id, T2.nombre, T2.apellidos, T3.descripcion
FROM cobros T1
INNER JOIN alumnos T2 ON T1.id_alumno=T2.Id
INNER JOIN conceptos T3 ON T1.id_concepto=T3.id_concepto
WHERE T1.fecha >= f1 OR T1.fecha <= f2

maravert 15-11-2009 21:32:40

Gracias HenryAraniva

Lo probe y me funcionó al 100%

Te lo agradezco enormemente

Ojala y pueda devolverte el favor que me has hecho :)

Gracias

Alejandro


La franja horaria es GMT +2. Ahora son las 10:10:30.

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