Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/08/2012, 12:48
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Consulta con left join

El query lo que obtiene primero es el producto cartesiano de #temp1 junto con los usuarios distintos de #temp2 (para obtener todos los documentos disponibles para cada usuario) ya despues se hace un full outer join contra #temp2(donde especifica que documentos tiene el usuario) y se obtiene una lista donde viene si el docto ya lo entrego o no......

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. descripcion VARCHAR(100),
  4. cod_doc VARCHAR(20)
  5. )
  6.  
  7. CREATE TABLE #temp2
  8. (
  9. cod_soc VARCHAR(20),
  10. cod_doc VARCHAR(20)
  11. )
  12.  
  13.  
  14. INSERT INTO #temp VALUES ('ACTA DE NACIMIENTO','010')
  15. INSERT INTO #temp VALUES ('CARTA DE NATURALIZACIÓN','020')
  16. INSERT INTO #temp VALUES ('IDENTIFICACIÓN OFICIAL','030')
  17. INSERT INTO #temp VALUES ('COMPROBANTE DE DOMICILIO','040')
  18. INSERT INTO #temp VALUES ('CURP','050')
  19. INSERT INTO #temp VALUES ('ACTA DE MATRIMONIO','060')
  20. INSERT INTO #temp VALUES ('CONTRATO DE AHORRO','070')
  21. INSERT INTO #temp VALUES ('ESCRITURA CONSTITUTIVA','110')
  22. INSERT INTO #temp VALUES ('CÉDULA DE IDENTIFIC. FISCAL','120')
  23. INSERT INTO #temp VALUES ('INSCRIPCIÓN REGISTRO PUBLICO','130')
  24. INSERT INTO #temp VALUES ('IDENT.OFICIAL REPRESENT.LEGAL','140')
  25. INSERT INTO #temp VALUES ('ESTADOS FINANCIEROS','150')
  26.  
  27.  
  28. INSERT INTO #temp2 VALUES ('00000001','070')
  29. INSERT INTO #temp2 VALUES ('00000003','070')
  30. INSERT INTO #temp2 VALUES ('00000004','070')
  31. INSERT INTO #temp2 VALUES ('00000005','030')
  32. INSERT INTO #temp2 VALUES ('00000005','040')
  33. INSERT INTO #temp2 VALUES ('00000005','060')
  34. INSERT INTO #temp2 VALUES ('00000005','010')
  35. INSERT INTO #temp2 VALUES ('00000005','070')
  36. INSERT INTO #temp2 VALUES ('00000006','070')
  37. INSERT INTO #temp2 VALUES ('00000011','070')
  38.  
  39.  
  40. SELECT t3.descripcion, t3.cod_doc,t3.cod_soc,CASE WHEN t4.cod_soc IS NULL THEN 'No' ELSE 'Si' END AS entregado FROM(
  41. SELECT * FROM #temp AS t1, (SELECT DISTINCT cod_soc FROM #temp2) AS t2
  42. ) t3
  43. FULL OUTER JOIN #temp2 AS t4 ON (t4.cod_doc=t3.cod_doc AND t3.cod_soc=t4.cod_soc)
Probe agregando un usuario y un documento y me regresa la informacion como la esta pidiendo el compañero....

ACTA DE NACIMIENTO 010 00000001 No
CARTA DE NATURALIZACIÓN 020 00000001 No
IDENTIFICACIÓN OFICIAL 030 00000001 No
COMPROBANTE DE DOMICILIO 040 00000001 No
CURP 050 00000001 No
ACTA DE MATRIMONIO 060 00000001 No
CONTRATO DE AHORRO 070 00000001 Si
ESCRITURA CONSTITUTIVA 110 00000001 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000001 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000001 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000001 No
ESTADOS FINANCIEROS 150 00000001 No
ACTA DE NACIMIENTO 010 00000003 No
CARTA DE NATURALIZACIÓN 020 00000003 No
IDENTIFICACIÓN OFICIAL 030 00000003 No
COMPROBANTE DE DOMICILIO 040 00000003 No
CURP 050 00000003 No
ACTA DE MATRIMONIO 060 00000003 No
CONTRATO DE AHORRO 070 00000003 Si
ESCRITURA CONSTITUTIVA 110 00000003 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000003 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000003 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000003 No
ESTADOS FINANCIEROS 150 00000003 No
ACTA DE NACIMIENTO 010 00000004 No
CARTA DE NATURALIZACIÓN 020 00000004 No
IDENTIFICACIÓN OFICIAL 030 00000004 No
COMPROBANTE DE DOMICILIO 040 00000004 No
CURP 050 00000004 No
ACTA DE MATRIMONIO 060 00000004 No
CONTRATO DE AHORRO 070 00000004 Si
ESCRITURA CONSTITUTIVA 110 00000004 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000004 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000004 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000004 No
ESTADOS FINANCIEROS 150 00000004 No
ACTA DE NACIMIENTO 010 00000005 Si
CARTA DE NATURALIZACIÓN 020 00000005 No
IDENTIFICACIÓN OFICIAL 030 00000005 Si
COMPROBANTE DE DOMICILIO 040 00000005 Si
CURP 050 00000005 No
ACTA DE MATRIMONIO 060 00000005 Si
CONTRATO DE AHORRO 070 00000005 Si
ESCRITURA CONSTITUTIVA 110 00000005 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000005 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000005 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000005 No
ESTADOS FINANCIEROS 150 00000005 No
ACTA DE NACIMIENTO 010 00000006 No
CARTA DE NATURALIZACIÓN 020 00000006 No
IDENTIFICACIÓN OFICIAL 030 00000006 No
COMPROBANTE DE DOMICILIO 040 00000006 No
CURP 050 00000006 No
ACTA DE MATRIMONIO 060 00000006 No
CONTRATO DE AHORRO 070 00000006 Si
ESCRITURA CONSTITUTIVA 110 00000006 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000006 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000006 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000006 No
ESTADOS FINANCIEROS 150 00000006 No
ACTA DE NACIMIENTO 010 00000011 No
CARTA DE NATURALIZACIÓN 020 00000011 No
IDENTIFICACIÓN OFICIAL 030 00000011 No
COMPROBANTE DE DOMICILIO 040 00000011 No
CURP 050 00000011 No
ACTA DE MATRIMONIO 060 00000011 No
CONTRATO DE AHORRO 070 00000011 Si
ESCRITURA CONSTITUTIVA 110 00000011 No
CÉDULA DE IDENTIFIC. FISCAL 120 00000011 No
INSCRIPCIÓN REGISTRO PUBLICO 130 00000011 No
IDENT.OFICIAL REPRESENT.LEGAL 140 00000011 No
ESTADOS FINANCIEROS 150 00000011 No

No entiendo porque dices que no aplica para este caso.......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me