Pregunta: | 49083 - BUSCAR DIFERENTES |
Autor: | noel martinez |
Hola amigos tengo un problemilla tengo dos tablas con el mismo numero y tipo de campos, una del 2005, y otra 2006 con nombres y cantidades, pero ahora requiero saber quienes son los mismos en las dos tablas y quienes no son iguales ,tengo problemas para sacar los que no son iguales ya que me repite el mismo de dato de cantidad para todos los registros, esto lo hice mediante un consulta de no coincidentes, espero puedan ayudarme
gracias....... |
Respuesta: | Eduardo de Miguel |
Yo si fuera tú, vinculaba la tabla de access más viejo al más nuevo y hacía una consulta con un FULL JOIN, lo ordenas por el campo que pueda estar vacío y listo, tienes una tabla con todos los registros y los que estén a nulos en una parte u otra son los que faltan en una tabla o la otra. |
Respuesta: | eider mauricio Aristizabal Erazo |
Hi all (:-)
No se si te entendí muy bien pero primero que todos, hay tres formas de recuperar registros de varias tablas al tiempo mediante JOIN, la primera es INNER JOIN que recupera los registros que están en ambas tablas la segunda es LEFT JOIN que recupera solo los registros de A que no estan en B y la tercera es el RIGHT JOIN que me recupera solo los registros de B que no estan en A. Creo que lo que tu quieres es unir el resultado del LEFT JOIN con el del RIGHT JOIN entonces puedes utilizar el UNION. Aquí te muestro 4 ejemplos, supongo que te sirve el 4. Para solucionar tu problema en Access debes crear una consulta la abres con el diseñador y haces clic en el menú ver/vista sql y : 1) Para recuperar los de 2005 que no estan en 2006 copia y pega lo siguiente: SELECT tabla2005.id, tabla2005.nombre FROM tabla2005 LEFT JOIN tabla2006 ON tabla2005.id=tabla2006.id WHERE (((tabla2005!id) Not In (tabla2006!id))); 2) Para recuperar los de 2006 k no estan en 2005 copia y pega lo siguiente: SELECT tabla2006.id, tabla2006.nombre FROM tabla2006 LEFT JOIN tabla2005 ON tabla2005.id=tabla2006.id WHERE (((tabla2006!id) Not In (tabla2005!id))); 3) Para recuperar los k estan en 2005 k estan en 2006 copia y pega lo siguiente: SELECT tabla2005.id, tabla2005.nombre FROM tabla2005 INNER JOIN tabla2006 ON tabla2005.id = tabla2006.id WHERE ((([tabla2005]![id])=[tabla2006]![id])); 4) Para recuperar los unicos en 2005 + los unicos en 2006 copia y pega lo siguiente(Tambien se puede hacer con RIGHT JOIN): SELECT tabla2005.id, tabla2005.nombre FROM tabla2005 LEFT JOIN tabla2006 ON tabla2005.id=tabla2006.id WHERE (((tabla2005!id) Not In (tabla2006!id))) UNION select tabla2006.id, tabla2006.nombre FROM tabla2006 LEFT JOIN tabla2005 ON tabla2006.id = tabla2005.id WHERE ((([tabla2006]![id]) Not In ([tabla2005]![id]))); Espero, te sirva de ayuda |