darkamerico
22-04-2013, 17:45:39
Precisamente este es mi problema, tengo dos tablas y deseo realizar una consulta SQL que liste solamente aquellos registros que se encuentran en una de ellas y no se encuentren en la otra.
La Tabla llamada: fise_usuarioxsumin, es la tabla donde existen registros que NO existen en la otra tabla: fise_transicion.
No soy muy bueno en SQL, sin embargo encontre la siguiente forma de SQL que podria resolver el problema:
Select * from t1 where not exists (select 1 from t2 where t2.id = t1.id)
Ambas tablas almacenan informacion por mes y año, lo cual debo tomar en cuenta ( anio='2013' and mes='03' ) por ejemplo.
La estructura de fise_usuarioxsumin es la siguiente:
CREATE TABLE `fise_usuarioxsumin` (
`idusuarioxsum` int(11) NOT NULL,
`idusuario_fk` int(11) NOT NULL,
`rc` varchar(16) NOT NULL,
`idsuminid_fk` int(11) NOT NULL,
`idcocina` int(11) NOT NULL,
`estado` tinyint(4) NOT NULL,
`anio` varchar(4) NOT NULL,
`mes` varchar(2) NOT NULL,
`benef_ApePat` varchar(40) NOT NULL,
`benef_ApeMat` varchar(40) NOT NULL,
`benef_Nombres` varchar(40) NOT NULL,
`benef_DNI` varchar(8) NOT NULL,
PRIMARY KEY (`idusuarioxsum`),
KEY `AnioMes` (`anio`,`mes`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Y la estructura de la otra tabla es:
CREATE TABLE `fise_transicion` (
`id` int(11) NOT NULL,
`rc` varchar(16) NOT NULL,
`prop_nombre` varchar(100) NOT NULL,
`prop_dni` varchar(8) NOT NULL,
`benef_ApePat` varchar(40) NOT NULL,
`benef_ApeMat` varchar(40) NOT NULL,
`benef_Nombres` varchar(40) NOT NULL,
`benef_DNI` varchar(8) NOT NULL,
`glosa` varchar(255) NOT NULL,
`tiene_cocina` char(1) NOT NULL,
`anio` varchar(4) NOT NULL,
`mes` varchar(2) NOT NULL,
`estado` char(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Por favor alguien que me ayude con este tema, mi aplicacion esta parada mientras tanto.
Gracias
Americo
La Tabla llamada: fise_usuarioxsumin, es la tabla donde existen registros que NO existen en la otra tabla: fise_transicion.
No soy muy bueno en SQL, sin embargo encontre la siguiente forma de SQL que podria resolver el problema:
Select * from t1 where not exists (select 1 from t2 where t2.id = t1.id)
Ambas tablas almacenan informacion por mes y año, lo cual debo tomar en cuenta ( anio='2013' and mes='03' ) por ejemplo.
La estructura de fise_usuarioxsumin es la siguiente:
CREATE TABLE `fise_usuarioxsumin` (
`idusuarioxsum` int(11) NOT NULL,
`idusuario_fk` int(11) NOT NULL,
`rc` varchar(16) NOT NULL,
`idsuminid_fk` int(11) NOT NULL,
`idcocina` int(11) NOT NULL,
`estado` tinyint(4) NOT NULL,
`anio` varchar(4) NOT NULL,
`mes` varchar(2) NOT NULL,
`benef_ApePat` varchar(40) NOT NULL,
`benef_ApeMat` varchar(40) NOT NULL,
`benef_Nombres` varchar(40) NOT NULL,
`benef_DNI` varchar(8) NOT NULL,
PRIMARY KEY (`idusuarioxsum`),
KEY `AnioMes` (`anio`,`mes`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Y la estructura de la otra tabla es:
CREATE TABLE `fise_transicion` (
`id` int(11) NOT NULL,
`rc` varchar(16) NOT NULL,
`prop_nombre` varchar(100) NOT NULL,
`prop_dni` varchar(8) NOT NULL,
`benef_ApePat` varchar(40) NOT NULL,
`benef_ApeMat` varchar(40) NOT NULL,
`benef_Nombres` varchar(40) NOT NULL,
`benef_DNI` varchar(8) NOT NULL,
`glosa` varchar(255) NOT NULL,
`tiene_cocina` char(1) NOT NULL,
`anio` varchar(4) NOT NULL,
`mes` varchar(2) NOT NULL,
`estado` char(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Por favor alguien que me ayude con este tema, mi aplicacion esta parada mientras tanto.
Gracias
Americo