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

Joins

Estas en el tema de Joins en el foro de SQL Server en Foros del Web. Buen día espero me puedan ayudar con esta duda que ya llevo bastante tiempo y no encuentro una solución, resulta que tengo el siguiente query ...
  #1 (permalink)  
Antiguo 04/09/2008, 17:47
 
Fecha de Ingreso: septiembre-2008
Mensajes: 3
Antigüedad: 9 años, 9 meses
Puntos: 0
Joins

Buen día espero me puedan ayudar con esta duda que ya llevo bastante tiempo y no encuentro una solución, resulta que tengo el siguiente query

Select DA.Codigo As Defecto,
Count(DA.Codigo) As Cantidad
From catDefectoAparato DA
Inner Join catInventarioHogar IH On IH.xtDefectoAparato_Defecto_Critico = DA.Indice
Inner Join catCapturaInspecciones CI On CI.xkInventarioHogar_Indice = IH.xqAsociacion
Inner Join catLoteAsignado LA On LA.Codigo_Lote = CI.Codigo_Lote
Inner Join catworkflowhistory WH On WH.Folio = LA.indice
Where LA.Codigo_Lote = 'L32RNZNGROB08381' And xtProceso_Proceso = '9' And WH.xtTarea_Tarea = '44'
Group By DA.Codigo, CI.Codigo_Lote
Order By DA.Codigo

Y me arroja el siguiente resultado

Defecto Cantidad
01 4
10 1
61 4
63 5

el problema es que tengo que hacer que aparezcan todos los codigos de defecto
aunque no se haya capturado un defecto con ese codigo en las inpecciones(catCapturaInspecciones)
Un ejemplo de lo que medebería mostrar es lo siguietne


Defecto Cantidad
01 4
02 0
03 0 <<-----------Estos son Codigos de defectos que no se capturaron
04 0 en las inspecciones pero se pueden llegar a capturar
. .
. .
. .
10 1
61 4
63 5

Alguna sugerencia ya intente con Left Right Full Outer Joins pero no doy con
alguna solución me podrian orientar un poco
  #2 (permalink)  
Antiguo 05/09/2008, 09:55
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 11 años, 7 meses
Puntos: 8
Respuesta: Joins

Cuando lo hiciste con Left outer join, como era tu consulta??
  #3 (permalink)  
Antiguo 05/09/2008, 12:03
 
Fecha de Ingreso: septiembre-2008
Mensajes: 3
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Joins

cuando lo hice con left join fue asi

Select DA.Codigo As Defecto,
Count(DA.Codigo) As Cantidad
-- CI.Codigo_Lote
From catDefectoAparato DA
Left Outer Join catInventarioHogar IH On IH.xtDefectoAparato_Defecto_Critico = DA.Indice
Left Outer Join catCapturaInspecciones CI On CI.xkInventarioHogar_Indice = IH.xqAsociacion
Left Outer Join catLoteAsignado LA On LA.Codigo_Lote = CI.Codigo_Lote
Left Outer Join catworkflowhistory WH On WH.Folio = LA.indice
Where LA.Codigo_Lote = 'L32RNZNGROB08381' And xtProceso_Proceso = '9' And WH.xtTarea_Tarea = '44'
Group By DA.Codigo, CI.Codigo_Lote
Order By DA.Codigo--, CI.Codigo_Lote

Acabo de hacer otro query de esta manera

Select CA.Codigo, Count(IH.xtDefectoAparato_Defecto_Critico) As Cantidad --1329396
From catInventarioHogar IH
Full Outer Join catDefectoAparato CA On CA.Indice = IH.xtDefectoAparato_Defecto_Critico
Full Outer Join catCapturaInspecciones CI On CI.xkInventarioHogar_Indice = IH.xqAsociacion
Full Outer Join catLoteAsignado LA On LA.Codigo_Lote = CI.Codigo_Lote
Full Outer Join catworkflowhistory WH On WH.Folio = LA.indice
Where LA.Codigo_Lote = 'L32RNZNGROB08381' And xtProceso_Proceso = '9' And WH.xtTarea_Tarea = '44'
Group By CA.Codigo
Order By CA.Codigo

Y me arroja el siguiente resultado
Codigo Cantidad
NULL 0
01 4
10 1
61 4
63 5


Cuando quito las condiciones del where y hago la consulta sin where me da el siguiente resultado

Select CA.Codigo, Count(IH.xtDefectoAparato_Defecto_Critico) As Cantidad --1329396
From catInventarioHogar IH
Full Outer Join catDefectoAparato CA On CA.Indice = IH.xtDefectoAparato_Defecto_Critico
Full Outer Join catCapturaInspecciones CI On CI.xkInventarioHogar_Indice = IH.xqAsociacion
Full Outer Join catLoteAsignado LA On LA.Codigo_Lote = CI.Codigo_Lote
Full Outer Join catworkflowhistory WH On WH.Folio = LA.indice
Group By CA.Codigo
Order By CA.Codigo

NULL 331116
01 8163
02 194
03 48
04 172
05 160
. 86320
. 2117
. 200
. 9587
. 26562
. 3688
. 5464
. 71903
. 444395
. 140616
. 166435
. 26535
. 0
. 0
. 0
. 0
. 10599
n 11774

Que es como quiero que se muestre los resultados pero necesito meterle condiciones con un Where

Aun no doy con la solución seguire intentando si tienen alguna sugerencia se los agradecería mucho
  #4 (permalink)  
Antiguo 08/09/2008, 05:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 52
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Joins

Hola,

Has probado con un INNER JOIN ?
  #5 (permalink)  
Antiguo 08/09/2008, 08:32
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 11 años, 7 meses
Puntos: 8
Respuesta: Joins

Que tal así:
Código:
Select DA.Codigo As Defecto,
Count(DA.Codigo) As Cantidad
From catDefectoAparato DA
Left Outer Join catInventarioHogar IH On IH.xtDefectoAparato_Defecto_Critico = DA.Indice  
Inner Join catCapturaInspecciones CI On CI.xkInventarioHogar_Indice = IH.xqAsociacion
Inner Join catLoteAsignado LA On LA.Codigo_Lote = CI.Codigo_Lote
Inner Join catworkflowhistory WH On WH.Folio = LA.indice
Where LA.Codigo_Lote = 'L32RNZNGROB08381' And xtProceso_Proceso = '9' And WH.xtTarea_Tarea = '44'
Group By DA.Codigo, CI.Codigo_Lote
Order By DA.Codigo
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 17:12.