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

Muy facil pero muy dificl (msSQL) ??????????????

Estas en el tema de Muy facil pero muy dificl (msSQL) ?????????????? en el foro de Bases de Datos General en Foros del Web. Hola... tengo datos en una bd SQL Server de ciertos productos.. Por ejemplo tengo estos registros en la tabla "PRODUCTOS": CodProducto / Descripcion 1 - ...
  #1 (permalink)  
Antiguo 04/02/2005, 08:12
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Exclamación Muy facil pero muy dificl (msSQL) ??????????????

Hola...

tengo datos en una bd SQL Server de ciertos productos..

Por ejemplo tengo estos registros en la tabla "PRODUCTOS":
CodProducto / Descripcion
1 - Pan
2 - Papel
3 - Queso
4 - Jamon


Bueno, el tema es que tengo otra tabla en que se registra si existe o no el producto en un estante:

Estante / codProducto / Existe
5 - 1 - 1
5 - 2 - 1


Y el problema es que cuando un producto no existe en un estante determinado, NO EXISTE EL REGISTRO....

osea NO estàn los registros

Estante / codProducto / Existe
5 - 3 - 0
5 - 4 - 0



Còmo los invento para generar un reporte en excel de los productos que estàn y no estàn, osea:


Estante / codProducto / Existe
5 - 1 - 1
5 - 2 - 1
5 - 3 - 0
5 - 4 - 0

?????????????????!

Saludos y gracias de antemano
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen

Última edición por Sir Matrix; 04/02/2005 a las 08:13
  #2 (permalink)  
Antiguo 04/02/2005, 09:08
Avatar de mesiasdiabolico  
Fecha de Ingreso: agosto-2004
Mensajes: 33
Antigüedad: 19 años, 8 meses
Puntos: 0
select
idProducto, isnull(existe,0)
from productos left join estantes
on p.idProducto=e.idProducto

__________________
Como mata el viento norte...
  #3 (permalink)  
Antiguo 04/02/2005, 15:31
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
no me ha resultado....
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #4 (permalink)  
Antiguo 04/02/2005, 15:51
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 5 meses
Puntos: 1
Cita:
Iniciado por Sir Matrix
no me ha resultado....
A mi no me queda claro qué es lo que quieres hacer, ¿podrías explicarlo de una forma que sea más fácil de entender?

Saludos
__________________
Ariel Avelar
  #5 (permalink)  
Antiguo 04/02/2005, 15:59
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Mismo caso que tu post anterior, un OUTER JOIN debe funcionar.

Siempre y cuando tengas o el estante o el producto, necesitas alguna de las 2 partes existentes
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 04/02/2005, 21:52
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Hola, muchas gracias por los consejos...

Lo que me complica es que estoy relacionando como 5 tablas en la consulta y me hago un lío para saber donde colocar el Outer Join...

Mithrandir, Podrías decirme un poco lo que hace el Outer Join??

Muchísimas gracias
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #7 (permalink)  
Antiguo 07/02/2005, 16:16
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Te coloca TODOS los regustros de uno de los lados (dependiendo de si es Left o Right).

Por ejemplo
FROM tabla1
INNER JOIN tabla2
ON ...
LEFT OUTER JOIN tabla3
ON...

Te dejará TODOS los registros del lado izquierdo (join de tablas 1 y 2), si no hay algun registro que concuerde con tabla3 entonces los campos para tabla3 se colocarán en NULL

FROM tabla1
RIGHT OUTER JOIN tabla2
ON...

Dejará TODOS los registros de tabla2, si no consigue su "pareja" de tabla1 entonces pondra NULL donde está el espacio para los registro de tabla1
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #8 (permalink)  
Antiguo 16/03/2005, 10:38
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
!!!!!!

es..es.... maravilloso.....

al fin me ha resultado lo del left outer join.... pasa que si pongo condiciones en el where para la tabla que está después del "LEFT" me funciona como un Inner Join..... (al menos eso creo)



Gracias, gracias
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #9 (permalink)  
Antiguo 16/03/2005, 14:50
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
que bueno que lo lograste.

Dependiendo de lo que quieras lograr algunas veces tendrás que poner los "filtros" dentro de ON y no del WHERE para que funcione como esperas.

Pero eso es algo que aprenderás sobre la marcha

SELECT algo
FROM una_tabla t1
LEFT OUTER JOIN otra_tabla t2
ON t1.llave = t2.llave
AND t1.filtro = 'algo'
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 08:13.