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

Mostrar datos que no esten en otra tabla

Estas en el tema de Mostrar datos que no esten en otra tabla en el foro de SQL Server en Foros del Web. hola a todos... estoy trabado en lo siguiente: tengo una tabla con cuotas: ncuota mes ---------------------- 1 Enero 2 Febrero ¦ ¦ ¦ ¦ 12 ...
  #1 (permalink)  
Antiguo 24/02/2013, 19:38
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Mostrar datos que no esten en otra tabla

hola a todos... estoy trabado en lo siguiente:

tengo una tabla con cuotas:

ncuota mes
----------------------
1 Enero
2 Febrero
¦ ¦
¦ ¦
12 Diciembre

y la otra tabla pagos: (las cuotas pagas)

Nombre, mes
Juan Enero
Juan Febrero
Analia Enero

Etc..

Bien, la tabla pagos puede que le falten pagos. Y lo que necesito mostrar es una lista de pagos por apellido pero inversa, o sea mostrar las cuotas que deben.

Un saludo y gracias
  #2 (permalink)  
Antiguo 25/02/2013, 02:03
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Mostrar datos que no esten en otra tabla

Intenta así:
Código SQL:
Ver original
  1. SELECT  P.Nombre,
  2.     M.Mes
  3. FROM    Cuotas_Mes M
  4. CROSS JOIN (SELECT  DISTINCT Nombre
  5.     FROM    Cuotas_Pagas) P
  6. EXCEPT
  7. SELECT  Nombre,
  8.     Mes
  9. FROM    Cuotas_Pagas;
La instrucción superior crea todas las combinaciones,
y la resta son los pagos que te faltan.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 25/02/2013, 11:01
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

Hola GeriReshef.. gracias pro responder...

Te comento lo probe asi como me digiste y me da error en la clausula from..

select p.apenom,m.mes from cuotas m cross join(select distinct apenom from pagos)p except select apenom,mes from pagos

La verdad no se...

Gracias
  #4 (permalink)  
Antiguo 25/02/2013, 11:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar datos que no esten en otra tabla

de que no sabes...de eso no tengas duda....

Código SQL:
Ver original
  1. CREATE TABLE #cuotas(
  2. id INT,
  3. mes VARCHAR(20)
  4. )
  5.  
  6. CREATE TABLE #pagos(
  7. apellido VARCHAR(20),
  8. mes VARCHAR(20)
  9. )
  10.  
  11. INSERT INTO #cuotas VALUES (1,'enero')
  12. INSERT INTO #cuotas VALUES (2,'febrero')
  13. INSERT INTO #cuotas VALUES (3,'marzo')
  14. INSERT INTO #cuotas VALUES (4,'abril')
  15. INSERT INTO #cuotas VALUES (5,'mayo')
  16.  
  17. INSERT INTO #pagos VALUES ('libras','enero')
  18. INSERT INTO #pagos VALUES ('yo','enero')
  19. INSERT INTO #pagos VALUES ('libras','febrero')
  20. INSERT INTO #pagos VALUES ('libras','marzo')
  21.  
  22.  
  23.  
  24. SELECT t1.apellido,t1.mes FROM(
  25. SELECT apellido,c.mes
  26. FROM #pagos AS p ,#cuotas AS c
  27. GROUP BY apellido,c.mes) t1 LEFT JOIN #pagos AS t2 ON (t1.mes=t2.mes AND t1.apellido=t2.apellido)
  28. WHERE t2.apellido IS NULL

pregunta, que version de sql server estas usando?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/02/2013, 12:55
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Mostrar datos que no esten en otra tabla

¿Los nombres de las tablas y las columnas en mi código son correctos?
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 25/02/2013, 13:02
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

Libras... si se o no creo que es un problema mio, no para vos me hables de ese modo.

GeriReshef... mil gracias en responder, si están bien los nombres de la tablas.
  #7 (permalink)  
Antiguo 25/02/2013, 13:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar datos que no esten en otra tabla

Cita:
Iniciado por cristian_fg Ver Mensaje
Libras... si se o no creo que es un problema mio, no para vos me hables de ese modo.

GeriReshef... mil gracias en responder, si están bien los nombres de la tablas.
Te sirvio lo que te puse o no lo probaste?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 25/02/2013, 15:55
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

Libras: te conteste sin probarlo.....

Lo pruebo y te contesto.
  #9 (permalink)  
Antiguo 25/02/2013, 21:41
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

Libras: lo probé..gracias

Funciona no del todo, porque me omite de los otros impagos.

por ejemplo si A debe Junio y B debe Julio me muestra para ambos como deuda Junio y julio
  #10 (permalink)  
Antiguo 26/02/2013, 09:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar datos que no esten en otra tabla

probe con estos datos:

Código SQL:
Ver original
  1. CREATE TABLE #cuotas(
  2. id INT,
  3. mes VARCHAR(20)
  4. )
  5.  
  6. CREATE TABLE #pagos(
  7. apellido VARCHAR(20),
  8. mes VARCHAR(20)
  9. )
  10.  
  11. DELETE FROM #cuotas
  12. INSERT INTO #cuotas VALUES (1,'enero')
  13. INSERT INTO #cuotas VALUES (2,'febrero')
  14. INSERT INTO #cuotas VALUES (3,'marzo')
  15. INSERT INTO #cuotas VALUES (4,'abril')
  16. INSERT INTO #cuotas VALUES (5,'mayo')
  17. INSERT INTO #cuotas VALUES (6,'junio')
  18. INSERT INTO #cuotas VALUES (7,'julio')
  19. INSERT INTO #cuotas VALUES (8,'agosto')
  20. INSERT INTO #cuotas VALUES (9,'septiembre')
  21. INSERT INTO #cuotas VALUES (10,'octubre')
  22. INSERT INTO #cuotas VALUES (11,'noviembre')
  23. INSERT INTO #cuotas VALUES (12,'diciembre')
  24.  
  25.  
  26.  
  27. DELETE FROM #pagos
  28. INSERT INTO #pagos VALUES ('libras','enero')
  29. INSERT INTO #pagos VALUES ('libras','febrero')
  30. INSERT INTO #pagos VALUES ('libras','marzo')
  31. INSERT INTO #pagos VALUES ('libras','abril')
  32. INSERT INTO #pagos VALUES ('libras','mayo')
  33. INSERT INTO #pagos VALUES ('libras','julio')
  34. INSERT INTO #pagos VALUES ('libras','agosto')
  35. INSERT INTO #pagos VALUES ('libras','septiembre')
  36. INSERT INTO #pagos VALUES ('libras','octubre')
  37. INSERT INTO #pagos VALUES ('libras','noviembre')
  38. INSERT INTO #pagos VALUES ('libras','diciembre')
  39.  
  40. INSERT INTO #pagos VALUES ('yo','enero')
  41. INSERT INTO #pagos VALUES ('yo','febrero')
  42. INSERT INTO #pagos VALUES ('yo','marzo')
  43. INSERT INTO #pagos VALUES ('yo','abril')
  44. INSERT INTO #pagos VALUES ('yo','mayo')
  45. INSERT INTO #pagos VALUES ('yo','junio')
  46. INSERT INTO #pagos VALUES ('yo','agosto')
  47. INSERT INTO #pagos VALUES ('yo','septiembre')
  48. INSERT INTO #pagos VALUES ('yo','octubre')
  49. INSERT INTO #pagos VALUES ('yo','noviembre')
  50. INSERT INTO #pagos VALUES ('yo','diciembre')
  51.  
  52.  
  53.  
  54.  
  55.  
  56. SELECT t1.apellido,t1.mes FROM(
  57. SELECT apellido,c.mes
  58. FROM #pagos AS p ,#cuotas AS c
  59. GROUP BY apellido,c.mes) t1 LEFT JOIN #pagos AS t2 ON (t1.mes=t2.mes AND t1.apellido=t2.apellido)
  60. WHERE t2.apellido IS NULL

y regresa que libras debe junio y yo debe julio......

puedes poner los datos donde no te sale??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 26/02/2013, 11:23
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

Estimado Libras:

Bien, he probado la consulta y funciona OK.... le agregue el campo numero de cuota me quedo de esta forma:

Cita:

SELECT t1.apenom,t1.mes,c.ncuota FROM(SELECT apenom,c.mes,c.ncuota FROM pagos as p ,cuotas as c GROUP BY apenom,c.mes,c.ncuota) t1 LEFT JOIN pagos as t2 on (t1.mes=t2.mes and t1.apenom=t2.apenom)Where t2.apenom Is Null order by t1.apenom,c.ncuota
Funciona OK, me muestra el numero de cuota (porque arranca en marzo como la 1°, pero tiene 12 porque hay dos media matriculas), ordenado por apellido y nombre y luego por ncuota.

Me ha sido de gran ayuda, si me surge otra cosa y no te molesta te consulto nuevamente.

Saludos y gracias
  #12 (permalink)  
Antiguo 26/02/2013, 11:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar datos que no esten en otra tabla

Excelente, la mayoria de las respuestas son para eso, para darte una orientacion hacia donde debes de dirigir tus esfuerzos, no que la consulta funcione tal cual la ponemos jejeje :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 26/02/2013, 13:11
 
Fecha de Ingreso: abril-2012
Mensajes: 61
Antigüedad: 12 años
Puntos: 1
Respuesta: Mostrar datos que no esten en otra tabla

jajajaja totalmente.... a veces uno copia y pega y no es asi.

la verdad que no lo hubiera echo sin tu ayuda.

Desde ya muchas gracias !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Etiquetas: tabla
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 07:17.