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

Todos los conceptos de una tabla con inner join

Estas en el tema de Todos los conceptos de una tabla con inner join en el foro de SQL Server en Foros del Web. HOLA DE NUEVO A TODOS HICE UN PROCEDIMIENTO ALMACENADO PARA QUE ME GENERE UN REPORTE, BIEN EL PROBLEMA ES QUE QUIERO QUE ME APARESCAN TODOS ...
  #1 (permalink)  
Antiguo 23/10/2013, 17:50
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Todos los conceptos de una tabla con inner join

HOLA DE NUEVO A TODOS

HICE UN PROCEDIMIENTO ALMACENADO PARA QUE ME GENERE UN REPORTE, BIEN EL PROBLEMA ES QUE QUIERO QUE ME APARESCAN TODOS LOS DATOS DE UNA TABLA AUNQUE AUN NO HAYA DATOS EN LAS DEMAS TABLAS QUE LE HAGAN REFERENCIA.

ESTE ES MI PROCEDIMIENTO ALMACENADO
Código SQL:
Ver original
  1. USE [sipro_inoc]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[PA_RPT_PREFINIQUITO]    Script Date: 10/23/2013 18:34:27 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[PA_RPT_PREFINIQUITO]
  9.  @NOMBRE_PRESUPUESTO VARCHAR(50)
  10.   AS
  11. BEGIN try
  12. BEGIN tran
  13.  
  14. SELECT
  15.         "dependencia"."nombre_dependencia",
  16.         "obra"."nombre_obra",
  17.         "ConceptoPresu"."codigo_presupuesto",
  18.         "ConceptoPresu"."descripcion_presupuesto",
  19.         "ConceptoPresu"."unidad_presupuesto" ,
  20.         "ConceptoPresu"."cantidad_presupuesto" ,  
  21.         "ConceptoPresu"."precion_unitario_presupuesto"  ,  
  22.         "ConceptoPresu"."importe_presupuesto"  ,  
  23.         "ConceptoPresu"."tipo_concepto"   ,  
  24.         "resumen_generador"."importe_concepto",
  25.         "estimaciones"."nombre_estimacion",
  26.         estimaciones.fecha_de,
  27.         estimaciones.fecha_a,
  28.         "resumen_generador"."cantidad_estimacion"  ,
  29.         "resumen_generador".id_concepto  ,
  30.         "ConceptoPresu".id_concepto,
  31.         "contrato"."clave_contrato",
  32.         "empresa"."nombre_empresa"
  33.        
  34.        
  35.            
  36.  FROM  
  37.    "sipro_inoc"."dbo"."empresa" "empresa"  INNER JOIN "sipro_inoc"."dbo"."obra" "obra"  ON empresa.id_empresa =obra.id_empresa  INNER JOIN  
  38.     "sipro_inoc"."dbo"."contrato" ON obra.id_obra =contrato.id_obra  INNER JOIN
  39.     "sipro_inoc"."dbo"."convenio" "convenio" ON contrato.id_contrato =convenio.id_contrato  INNER JOIN
  40.     "sipro_inoc"."dbo"."dependencia" ON obra.id_dependencia =dependencia.id_dependencia  INNER JOIN
  41.     "sipro_inoc"."dbo"."presupuesto" "presupuesto"  ON contrato.id_contrato =presupuesto.id_contrato INNER JOIN
  42.       "sipro_inoc"."dbo"."estimaciones" "estimaciones"  ON presupuesto.id_presupuesto =estimaciones.id_presupuesto     INNER JOIN resumen_generador
  43.       ON estimaciones.id_estimacion = resumen_generador.id_estimacion INNER JOIN ConceptoPresu ON
  44.       ConceptoPresu.id_concepto = resumen_generador.id_concepto
  45.  WHERE  nombre_presupuesto=@NOMBRE_PRESUPUESTO
  46.  
  47. COMMIT
  48. END TRY
  49. BEGIN CATCH
  50.     ROLLBACK
  51.     PRINT error_message()
  52. END CATCH

TODOS LOS DATOS QUE QUIERO QUE ME SALGAN ES EL DE CODIGO Y DESCRIPCIÓN.

ALGUNA SUGERENCIA PARA LOGRARLO, LO INTENTE CON UNION PERO NO LO CONSEGUI


MUCHAS GRACIAS DE ANTEMANO
  #2 (permalink)  
Antiguo 23/10/2013, 17:59
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: Todos los conceptos de una tabla con inner join

prueba con left join :) en lugar de inner join
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/10/2013, 09:23
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Todos los conceptos de una tabla con inner join

Así es, lo intente con un right por la posición en la que esta mi tabla y funciona. Pero ahora me he tropezado con otro problema funciona siempre y cuando no utilice el where

Código SQL:
Ver original
  1. SELECT
  2.         "dependencia"."nombre_dependencia",
  3.         "obra"."nombre_obra",
  4.    
  5.        
  6.         "ConceptoPresu"."codigo_presupuesto",
  7.         "ConceptoPresu"."descripcion_presupuesto",
  8.         "ConceptoPresu"."unidad_presupuesto" ,
  9.         "ConceptoPresu"."cantidad_presupuesto" ,  
  10.         "ConceptoPresu"."precion_unitario_presupuesto"  ,  
  11.         "ConceptoPresu"."importe_presupuesto"  ,  
  12.         "ConceptoPresu"."tipo_concepto"   ,  
  13.         "resumen_generador"."importe_concepto",
  14.         "estimaciones"."nombre_estimacion",
  15.         estimaciones.fecha_de,
  16.         estimaciones.fecha_a,
  17.          "resumen_generador"."cantidad_estimacion"  ,
  18.         "contrato"."clave_contrato",
  19.         "empresa"."nombre_empresa"
  20.        
  21.            
  22.  FROM  
  23.    "sipro_inoc"."dbo"."empresa" "empresa"  INNER JOIN "sipro_inoc"."dbo"."obra" "obra"  ON empresa.id_empresa =obra.id_empresa  INNER JOIN  
  24.     "sipro_inoc"."dbo"."contrato" ON obra.id_obra =contrato.id_obra  INNER JOIN
  25.     "sipro_inoc"."dbo"."convenio" "convenio" ON contrato.id_contrato =convenio.id_contrato  INNER JOIN
  26.     "sipro_inoc"."dbo"."dependencia" ON obra.id_dependencia =dependencia.id_dependencia  INNER JOIN
  27.     "sipro_inoc"."dbo"."presupuesto" "presupuesto"  ON contrato.id_contrato =presupuesto.id_contrato INNER JOIN
  28.       "sipro_inoc"."dbo"."estimaciones" "estimaciones"  ON presupuesto.id_presupuesto =estimaciones.id_presupuesto
  29.          INNER JOIN resumen_generador
  30.       ON estimaciones.id_estimacion = resumen_generador.id_estimacion RIGHT JOIN ConceptoPresu ON
  31.       ConceptoPresu.id_concepto = resumen_generador.id_concepto
  32.  WHERE  nombre_presupuesto='nombre_presupuesto'

cuando le pongo la ultima linea no me manda todo el presupuesto.

Que sugerencias me podrias dar porfitas.. De antemano muchas gracias
  #4 (permalink)  
Antiguo 24/10/2013, 09:25
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: Todos los conceptos de una tabla con inner join

verifica tus datos y las relaciones de los mismos, si no te regresa todo con un where entonces hay partes que se estan amarrando de mas :) ademas veo en tu query que tienes todo ligado con inner join, porque no lo cambias por right left join??? o es necesario que los datos existan en todas las tablas menos en la ultima?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 24/10/2013, 09:33
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Todos los conceptos de una tabla con inner join

Como que se estan amarrando de mas? =D

Y realmente necesito datos de todas las tablas, no se si es a lo que te refieres.
  #6 (permalink)  
Antiguo 24/10/2013, 09:43
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: Todos los conceptos de una tabla con inner join

si a lo que me refiero es que alguna tabla no tiene datos que hagan match con tu where, prueba a hacer lo siguiente:


Código SQL:
Ver original
  1. SELECT *
  2. FROM  
  3.    "sipro_inoc"."dbo"."empresa" "empresa"  INNER JOIN "sipro_inoc"."dbo"."obra" "obra" ON empresa.id_empresa =obra.id_empresa  RIGHT JOIN ConceptoPresu ON
  4.       ConceptoPresu.id_concepto = resumen_generador.id_concepto
  5.  WHERE  nombre_presupuesto='nombre_presupuesto'
y ve que regresa, luego con esto:

Código SQL:
Ver original
  1. SELECT *
  2. FROM  
  3.    "sipro_inoc"."dbo"."empresa" "empresa"  INNER JOIN "sipro_inoc"."dbo"."obra" "obra"  ON empresa.id_empresa =obra.id_empresa  INNER JOIN  
  4.     "sipro_inoc"."dbo"."contrato" ON obra.id_obra =contrato.id_obra   RIGHT JOIN ConceptoPresu ON
  5.       ConceptoPresu.id_concepto = resumen_generador.id_concepto
  6.  WHERE  nombre_presupuesto='nombre_presupuesto'
y asi sucesivamente hasta que veas en que parte pierdes los datos que necesitas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 24/10/2013, 09:53
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Todos los conceptos de una tabla con inner join

Si de hecho comence a hacer eso, pero se supone que tengo que hacerlo desde donde tengo presupuesto porque es en donde contiene el nombre del presupuesto y con eso es mas qeu suficiente para que ya no me mande todo solo me manda los que tienen relación.

pongo esto para probar
Código SQL:
Ver original
  1. SELECT
  2. *
  3.        
  4.            
  5.  FROM  
  6.  
  7. conceptoPresu LEFT JOIN resumen_generador ON conceptopresu.id_concepto= resumen_generador.id_concepto LEFT JOIN estimaciones ON
  8. resumen_generador.id_estimacion= estimaciones.id_estimacion RIGHT JOIN presupuesto ON
  9. estimaciones.id_presupuesto = presupuesto.id_presupuesto
  10.  
  11.  WHERE  nombre_presupuesto='nombre_presupuesto'

Etiquetas: fecha, join, select, tabla
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 02:56.