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

Consulta a 2 tablas con criterios distintos

Estas en el tema de Consulta a 2 tablas con criterios distintos en el foro de SQL Server en Foros del Web. Buenas noches: Veamos, se trata de lo siguiente. Tengo una tabla llamada PROCPesoMateriaPrima que, entre otros campos, esta el de FechaLote y Lote. La primera ...
  #1 (permalink)  
Antiguo 23/01/2013, 18:48
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Consulta a 2 tablas con criterios distintos

Buenas noches:
Veamos, se trata de lo siguiente.

Tengo una tabla llamada PROCPesoMateriaPrima que, entre otros campos, esta el de FechaLote y Lote. La primera es un campo fecha (sorry lo riterativo y obvio) y la segunda es un campo texto que contiene un código de lote.

Este código de lote tiene en su estructura la fecha de lote (FechaLote), por ejemplo

Lote : TCA0901310PA
FechaLote : 09/01/2013

Como verán 09013 corresponde al día, mes y último dígito del año en curso. Sin embargo hay varios lotes que tienen la misma fecha de lote

Lotes :
TCA1701305PA
TCA1701306PA
TCA1701307PA

FechaLote : 17/01/2013

Ahora bien, en otras tablas el campo que las "une" es el código de lote. Y aquí se me presenta el problema.

He creado un combo box (un select) que muestra todas las fechas de lote creadas (utilizando un distinct en la consulta para evitar mostrar duplicados) PERO se muestran inclusive fechas de lote de lotes que aún no han sido procesados. Por ejemplo...

Tenemos estos lotes

09/01/2013
TCA0901310PA

10/01/2013
TCA1001308PA
TEA1001301PA

17/01/2013
TCA1701305PA
TCA1701306PA
TCA1701307PA


Como ven, hay 6 lotes de 3 fechas distintas. En el combo box estoy mostrando las 3 fechas, pero sucede que sólo se han procesado 4 lotes: los 2 del 10/01/2013 y 2 del 17/01/2013.

Entonces lo que necesito es que el combo box muestre 2 fechas, no las 3 (o todas como es en la actualidad)

Actualmente muestra

09/01/2013
10/01/2013
17/01/2013

y necesito que muestre

10/01/2013
17/01/2013

Cuando mostraba solamente el código de lotes que aún no han sido utilizado y no las fechas de lote realizaba la operación con esta consulta

Cita:
Select Distinct FechaLote From PROCPesoMateriaPrima Where Lote Not In (Select Lote From PROCRecepcionMateriaPrimaHACCP)
Lo que hago con esta consulta es mostrar las fechas de la tabla PROCPesoMateriaPrima cuando el contenido del campo Lote NO se encuentra en el campo Lote de la tabla PROCRecepcionMateriaPrimaHACCP

Pero lo que necesito es algo que haga esto:

mostrar las fechas de lotes de la tabla PROCPesoMateriaPrima de los registros cuyos códigos de lote SE ENCUENTRAN en la tabla PROCRecepcionMateriaPrimaHACCP


Si en la tabla PROCPesoMateriaPrima tenemos

09/01/2013 TCA0901310PA
10/01/2013 TCA1001308PA
10/01/2013 TEA1001301PA
17/01/2013 TCA1701305PA
17/01/2013 TCA1701306PA
17/01/2013 TCA1701307PA


y en la tabla PROCRecepcionMateriaPrimaHACCP tenemos

TCA1001308PA
TEA1001301PA
TCA1701305PA
TCA1701307PA

entonces en el combo box debería mostrar SOLAMENTE

10/01/2013
17/01/2013


De verdad espero haberme explicado bien.
Ojalá puedan ayudarme.

Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 24/01/2013, 08:48
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Consulta a 2 tablas con criterios distintos

Veamos si entendi bien:

"mostrar las fechas de lotes de la tabla PROCPesoMateriaPrima de los registros cuyos códigos de lote SE ENCUENTRAN en la tabla PROCRecepcionMateriaPrimaHACCP"

Si con el SELECT NOT IN muestras los que NO estan en la tabla PROCRecepcionMateriaPrimaHACCP

entonces toma ese mismo query y quitale el NOT y te mostrara lo que quieres

Select Distinct FechaLote From PROCPesoMateriaPrima Where Lote IN (Select Lote From PROCRecepcionMateriaPrimaHACCP)

Saludos.
  #3 (permalink)  
Antiguo 24/01/2013, 08:55
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Consulta a 2 tablas con criterios distintos

O hazlo mas simple aún:

SELECT DISTINCT a.FechaLote FROM PROCPesoMateriaPrima a, PROCRecepcionMateriaPrimaHACCP b
WHERE a.Lote = b.Lote
  #4 (permalink)  
Antiguo 24/01/2013, 09:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consulta a 2 tablas con criterios distintos

Si, mucho mejor, entre menos utilicemos NOT IN ...IN, tendremos mejor performance
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 24/01/2013, 09:36
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Consulta a 2 tablas con criterios distintos

Muchas gracias a ambos..... resultó bien hasta el momento. Una consulta adicional para iislas ¿por que mencionas que se puede mejorar la performance al uno usar NOT IN o IN?

Un saludo desde Lima, Perú
  #6 (permalink)  
Antiguo 24/01/2013, 09:51
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Consulta a 2 tablas con criterios distintos

Simplemente por la rapidez de la consulta, con el IN..NOT IN debes hacer dos select para lograr lo que quieres, con la otra solo haces un select y ya, mejor performance ;)
  #7 (permalink)  
Antiguo 24/01/2013, 10:14
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Consulta a 2 tablas con criterios distintos

Gracias por la aclaración..... voy a probarlo y les comento al rato

Etiquetas: campos, criterios, distintos, registro, select, tabla, tablas
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 04:11.