Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta para sacar los coicidentes y no coincidentes de dos tablas

Estas en el tema de Consulta para sacar los coicidentes y no coincidentes de dos tablas en el foro de Bases de Datos General en Foros del Web. Hola, haber que se puede hacer con esto... Tengo lo siguinte: Tabla A Id___Concepto___presupuesto ===================== 1_____aaa__________100 2_____bbb__________225 Tabla B Id____Devengado ============ 2_______150 3_______75 El resultado ...
  #1 (permalink)  
Antiguo 05/08/2009, 05:25
Avatar de arprielo  
Fecha de Ingreso: octubre-2007
Mensajes: 67
Antigüedad: 16 años, 6 meses
Puntos: 0
Consulta para sacar los coicidentes y no coincidentes de dos tablas

Hola, haber que se puede hacer con esto... Tengo lo siguinte:

Tabla A

Id___Concepto___presupuesto
=====================
1_____aaa__________100
2_____bbb__________225

Tabla B

Id____Devengado
============
2_______150
3_______75

El resultado querido es:
Consulta
Id____Concepto____Presupuesto_____Devengado
=================================
1_______aaa_________100
2_______bbb_________225___________150
3__________________________________75


En definitiva, quiero sacar los coincidentes y no coincidentes tanto de la tabla A y la B. Es posible hacer esto???

Un saludo a todos,
__________________
Viva Linux! viva Ubuntu...!
  #2 (permalink)  
Antiguo 05/08/2009, 05:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

Si los quieres sumados por totales:
Código sql:
Ver original
  1. SELECT Id, IFNULL(SUM(Devengado),0) Devengado, IFNULL(SUM(Presupuesto),0) Presupuesto
  2. FROM a LEFT JOIN b USING(Id)
  3. GROUP BY Id;
Si los quieres listado por ID:
Código sql:
Ver original
  1. SELECT Id, IFNULL(Devengado,0) Devengado, IFNULL(Presupuesto,0) Presupuesto
  2. FROM a LEFT JOIN b USING(Id)
  3. ORDER BY Id;

Nota sinequanon: La primera tabla debe contener todos los registros que siempre están, ya que se usará como pivote de búsqueda. Si un ID de la segunda tabla no está en la primera, es probable que no salga listado. Para evitarlo deberías incluir una tercera tabla al principio que contenga los IDs desde la tabla de donde se originan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/08/2009, 06:32
Avatar de arprielo  
Fecha de Ingreso: octubre-2007
Mensajes: 67
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

No consigo que funcione el codigo, Estoy utilizando Access.
Me salta el error: "Error de sintaxis(falta operador) ne la expresión de consulta 'IFNULL(Devengado,0) Devengado'"

Utilizando el as aquí 'IFNULL(Devengado,0) AS Devengado' deja de salir pero saliendo otro nuevo que dice: "Error de sintaxis en la clásula FROM"

Que pasa entonces... no podre tener el resultado querido? Si habia pensado ya lo de la tercera tabla pero antes quiero descartar esto que es para mi más sencillo.

Por favor aseguramelo de si es ó no posible. Gracias

SAludos
__________________
Viva Linux! viva Ubuntu...!
  #4 (permalink)  
Antiguo 05/08/2009, 07:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

¿Qué motor de base de datos usas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 06/08/2009, 01:10
Avatar de arprielo  
Fecha de Ingreso: octubre-2007
Mensajes: 67
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

Utilizo el Motor Jet de Micro$oft, casi seguro que es la versión 4.0. En concreto la 4.0.6218.0 cuyo nivel de Service Pack en el (SP6)

Es eso a lo que te refieres?
__________________
Viva Linux! viva Ubuntu...!
  #6 (permalink)  
Antiguo 06/08/2009, 04:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

Me refiero al DBMS: SQL Server, Oracle, DB2, MySQL, Postgre, FireBird... ¿Qué estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/08/2009, 00:51
Avatar de arprielo  
Fecha de Ingreso: octubre-2007
Mensajes: 67
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

Estoy utilizando Microsoft Access 2003
__________________
Viva Linux! viva Ubuntu...!
  #8 (permalink)  
Antiguo 07/08/2009, 15:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta para sacar los coicidentes y no coincidentes de dos tablas

Arprielo,
prueba esta consulta:
Código sql:
Ver original
  1. (SELECT A.id, A.concepto, A.presupuesto, B.devengado
  2. FROM A LEFT JOIN B ON A.id=B.id)
  3. UNION ALL
  4. (SELECT B.id, NULL, NULL, B.devengado
  5. FROM B LEFT JOIN A ON A.id=B.id WHERE A.id IS NULL) ORDER BY id

Creo que vale para Access (lo he probado en una versión de 2000) y para cualquier tipo de motor, pues se trata de SQL Standard.
Aclaración:
Primero me traigo los que sólo aparecen en A y los coincidentes entre A y B mediante un LEFT JOIN de A con B, situando en la coincidencia el devengado como último valor. Luego uniendo mediante union all le sumo aquellos de B que no están en A mediante otro left join, en este caso de B a A, buscando Null en el campo A.id. Para que tengan una estructura que permita la union, pongo NULL en los campos inexistentes. Finalmente, he ordenado por el campo id.

Última edición por jurena; 08/08/2009 a las 03:04
  #9 (permalink)  
Antiguo 02/09/2009, 03:46
Avatar de arprielo  
Fecha de Ingreso: octubre-2007
Mensajes: 67
Antigüedad: 16 años, 6 meses
Puntos: 0
Funciona!!!

Muchas Gracias, me gusta tú explicación.

Un saludo
__________________
Viva Linux! viva Ubuntu...!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:30.