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

Armar query convinado con un catalogo

Estas en el tema de Armar query convinado con un catalogo en el foro de SQL Server en Foros del Web. Hola: Creo que lo que intento hacer se denomina CONSULTA CONVINADA , tengon un catalogo denominado "InterEB_TipoBienDocu", y una tabla de datos denominada "dtEB_Documentacion ", ...
  #1 (permalink)  
Antiguo 28/03/2011, 17:22
Avatar de citaem  
Fecha de Ingreso: agosto-2005
Mensajes: 218
Antigüedad: 18 años, 7 meses
Puntos: 0
Armar query convinado con un catalogo

Hola:

Creo que lo que intento hacer se denomina CONSULTA CONVINADA , tengon un catalogo denominado "InterEB_TipoBienDocu", y una tabla de datos denominada "dtEB_Documentacion ", bien, pues requiero que mi query use estas tablas y me proporciones las columnas del catalogo y una columna de la tabla de datos, pero que es el caso de que no exista información del catalogo en la tabla de datos, aun asi me muestre el contenido del catalogo con las columnas de la tabla de datos en vacio, ya que actualmente si la tabla de datos no contiene información, no me muestra nada...

Codigo actual
Código SQL:
Ver original
  1. SELECT InBD.idInterTipoBienDocu,doc.idctEB_EstatusDoc
  2. FROM dtEB_Documentacion doc
  3. RIGHT JOIN InterEB_TipoBienDocu InBD ON doc.idInterTipoBienDocu = InBD.idInterTipoBienDocu
  4. WHERE
  5. InBD.idctEB_TipoBien = 0

Me da como resultado

------------------
42 | 1
43 | 1
44 | NULL
45 | NULL
46 | NULL
------------------

pero si agrego al where la linea

Código SQL:
Ver original
  1. AND doc.iddtEB_PADF = 16

ya no me arroja nada.... y quisiera que enviara algo asi


------------------
42 | NULL
43 | NULL
44 | NULL
45 | NULL
46 | NULL
------------------


¿Es posible hacer esto?, GRACIAS
  #2 (permalink)  
Antiguo 29/03/2011, 01:06
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Armar query convinado con un catalogo

Tu tabla dtEB_Documentacion tiene registros con el campo iddtEB_PADF con el valor 16???

Código SQL:
Ver original
  1. SELECT * FROM dtEB_Documentacion WHERE iddtEB_PADF =16

si? muestranos un ejemplo.

no? bueno por eso ya no muestra nada, pues le estas diciendo en la consulta que todos los registros de la tabla dtEB_Documentacion que tengan en ese campo el valor de 16 combinados con la otra tabla
  #3 (permalink)  
Antiguo 29/03/2011, 07:15
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: Armar query convinado con un catalogo

En lugar de usar un right join usa un left join, con eso te presentara los valores que traen nulos en la otra tabla :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 29/03/2011, 09:50
Avatar de citaem  
Fecha de Ingreso: agosto-2005
Mensajes: 218
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Armar query convinado con un catalogo

Joch_pa:

Gracias por responder, efectivamamente iddtEB_PADF = 16 no tiene ningun elemento en la tabla dtEB_Documentacion, por eso esperaba que le diera prioridad al catalogo y arrojara los elementos de este, con la columna en vacios o en ceros de la de dtEB_Documentacion....

¿Alguna propuesta?...

GRACIAS


Libras:

Igual, mil Gracias, por la atencion de responder, Yo tambien pense que con el right o el left o el outer alguno pegaria, pero probe con todos y ni asi me arroja el resultado esperado

------------------
42 | NULL
43 | NULL
44 | NULL
45 | NULL
46 | NULL
------------------


Yo esperaba que se pudieran juntar las columnas por separado asi respetaria el catalogo y marcaria en NULL toda la columna de la tabla de dtEB_Documentacion..... pero quiza existen instrucciones que en mi poco conocimietno del transac aun no descubro.....

¿Alguna propuesta?...

GRACIAS
  #5 (permalink)  
Antiguo 29/03/2011, 10:44
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: Armar query convinado con un catalogo

Algunos datos de ejemplo de tu tabla, para poder revisar que pasa..

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 29/03/2011, 10:53
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Armar query convinado con un catalogo

Hola citaem:

Si entendí correctamente, lo que tienes que hacer es incluir la condición (doc.iddtEB_PADF = 16) en la sección ON del INNER JOIN. Lamentablemente no pones datos de ejemplo, pero creo que sería más o menos así:


Código SQL:
Ver original
  1. DECLARE @InterEB_TipoBienDocu TABLE (idInterTipoBienDocu INT, idctEB_TipoBien INT)
  2. DECLARE @dtEB_Documentacion TABLE (idInterTipoBienDocu INT, idctEB_EstatusDoc INT, iddtEB_PADF INT)
  3.  
  4. INSERT INTO @InterEB_TipoBienDocu VALUES(42, 0)
  5. INSERT INTO @InterEB_TipoBienDocu VALUES(43, 0)
  6. INSERT INTO @InterEB_TipoBienDocu VALUES(44, 0)
  7. INSERT INTO @InterEB_TipoBienDocu VALUES(45, 0)
  8. INSERT INTO @InterEB_TipoBienDocu VALUES(46, 0)
  9.  
  10. INSERT INTO @dtEB_Documentacion VALUES (42, 1, 15)
  11. INSERT INTO @dtEB_Documentacion VALUES (43, 1, 15)
  12.  
  13. --Este es el query que pones de ejemplo
  14. SELECT InBD.idInterTipoBienDocu,doc.idctEB_EstatusDoc
  15. FROM @dtEB_Documentacion doc
  16. RIGHT JOIN @InterEB_TipoBienDocu InBD ON doc.idInterTipoBienDocu = InBD.idInterTipoBienDocu
  17. WHERE
  18. InBD.idctEB_TipoBien = 0
  19.  
  20. --Con LEFT JOIN
  21. SELECT InBD.idInterTipoBienDocu, doc.idctEB_EstatusDoc
  22. FROM @InterEB_TipoBienDocu InBD
  23. LEFT JOIN @dtEB_Documentacion doc ON doc.idInterTipoBienDocu = InBD.idInterTipoBienDocu AND doc.iddtEB_PADF = 16
  24. WHERE
  25. InBD.idctEB_TipoBien = 0
  26.  
  27. --Con RIGTH JOIN
  28. SELECT InBD.idInterTipoBienDocu, doc.idctEB_EstatusDoc
  29. FROM @dtEB_Documentacion doc
  30. RIGHT JOIN @InterEB_TipoBienDocu InBD ON doc.idInterTipoBienDocu = InBD.idInterTipoBienDocu AND doc.iddtEB_PADF = 16
  31. WHERE
  32. InBD.idctEB_TipoBien = 0

Haz algunas pruebas con este código para ver si es lo que necesitas. Si continuas con problemas, tal como lo comenta el compañero Libra sería conveniente que nos pusieras algunos datos para revisar.

Saludos
Leo
  #7 (permalink)  
Antiguo 29/03/2011, 11:31
Avatar de citaem  
Fecha de Ingreso: agosto-2005
Mensajes: 218
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Armar query convinado con un catalogo

Libras y leonardo_josue:

MIL, MIL, MIL GRACIAS... por atender tan amablemente mi duda.

Efectivamente, como bien indicaste leonardo_josue, se soluciono al poner el

Código ASP:
Ver original
  1. LEFT JOIN @dtEB_Documentacion doc ON doc.idInterTipoBienDocu = InBD.idInterTipoBienDocu AND doc.iddtEB_PADF = 16

en el join.... ya arroja lo que yo esperaba.... de verdad MIL GRACIAS nunca se me ocurrio poner la condicionante en el join, bueno de hecho no sabia que eso se podia hacer......


GRACIAS.... he aprendido algo nuevo y por fin se soluciono el problema...
  #8 (permalink)  
Antiguo 29/03/2011, 14:38
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: Armar query convinado con un catalogo

¿Convinado?, es algo que va con VINO.............No es broma, disculpen...
__________________
MCTS Isaias Islas

Etiquetas: catalogo, query
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 23:32.