Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Unhappy ayuda con la siguiente consulta

hola quiero ver si alguien me puede ayudar con el siguiente problema
tengo las siguentesta tablas:

sap_mrecibos.- la cual es el maestro de los recibos que genere. y l aotra tabla
sap_drecibo.- en la cual guardo el registro del detalle de mis recibos. (adjunto archivos winzip con tablas y datos que tengo).

bien lo que quiero hacer es la siguente consulta que se supone tendria que ser una a muchos. la consulta es la siguiente

Código SQL [-]
SELECT     dbo.SAP_MRECIBO.id_recibo, dbo.SAP_MRECIBO.folio, 
dbo.SAP_MRECIBO.mes, dbo.SAP_MRECIBO.anio, dbo.SAP_MRECIBO.contrato, 
                      dbo.SAP_MRECIBO.fecha_pago, dbo.SAP_MRECIBO.usuario, 
dbo.SAP_MRECIBO.sub_total, dbo.SAP_MRECIBO.descuento, 
                      dbo.SAP_MRECIBO.total_neto, dbo.SAP_MRECIBO.total,
 dbo.SAP_DRECIBO.servicio, dbo.SAP_DRECIBO.importe
FROM         dbo.SAP_MRECIBO LEFT OUTER JOIN
                      dbo.SAP_DRECIBO ON dbo.SAP_MRECIBO.mes = dbo.SAP_DRECIBO.mes AND
 dbo.SAP_MRECIBO.anio = dbo.SAP_DRECIBO.anio AND 
                      dbo.SAP_MRECIBO.contrato = dbo.SAP_DRECIBO.contrato
WHERE     (dbo.SAP_MRECIBO.mes = 1) AND (dbo.SAP_MRECIBO.anio = 2009)

se supone me tendria que considerar un registro de la tabla sap_mrecibo y los 3 registros que tengo en la tabla sap_drecibo, sin embargo no lo hace alguien me podria ayudar o decirme en que estoy mal al hacer mi consulta.

Última edición por microbiano fecha: 15-04-2010 a las 19:56:28.
Responder Con Cita
  #2  
Antiguo 10-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Wink ayuda

aun no consigo resolver el problema
Responder Con Cita
  #3  
Antiguo 10-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por microbiano Ver Mensaje
[..](adjunto archivos winzip con tablas y datos que tengo). [..]
Ahí sólo hay un .xls
Responder Con Cita
  #4  
Antiguo 11-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Unhappy exacto

el archivo xls son las tablas que tengo en el sistema y aqui en el foro puse al consulta que como te digo tendria que ser de unos a muchos pero no me muestra nada espero me puedan ayudar.

esta es la consulta:
Código Delphi [-]
SELECT     SAP_MRECIBO.anio, SAP_MRECIBO.mes,
 SAP_MRECIBO.contrato, SAP_MRECIBO.sub_total, SAP_MRECIBO.descuento,
 SAP_MRECIBO.total_neto, 
                      SAP_DRECIBO.servicio, SAP_DRECIBO.importe
FROM         SAP_MRECIBO LEFT OUTER JOIN
                      SAP_DRECIBO ON SAP_MRECIBO.contrato = SAP_DRECIBO.contrato
 AND SAP_MRECIBO.mes = SAP_DRECIBO.mes AND 
                      SAP_MRECIBO.anio = SAP_DRECIBO.anio
WHERE     (SAP_MRECIBO.mes = 1) AND (SAP_MRECIBO.anio = 2009)

Última edición por microbiano fecha: 11-04-2010 a las 05:26:47. Razón: ingresar sql
Responder Con Cita
  #5  
Antiguo 13-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
planteo mi consulta de otra manera

tengo las siguientes tablas

mcontratos (correspondiente al maestro de recibos)de la siguiente forma

Código SQL [-]
CREATE TABLE [dbo].[mcontratos] (
    [ID_RECIBO] [int] IDENTITY (1, 1) NOT FOR REPLICATION  NOT NULL ,
    [FOLIO] [numeric](18, 0) NULL ,
    [MES] [numeric](18, 0) NULL ,
    [ANIO] [numeric](18, 0) NULL ,
    [NO_CONTRATO] [nvarchar] (30) COLLATE Traditional_Spanish_CI_AS NULL ,
    [FECHA_PAGO] [smalldatetime] NULL ,
    [USUARIO] [numeric](16, 0) NULL ,
    [DESCUENTO] [numeric](6, 2) NULL ,
    [SUBTOTAL] [numeric](16, 2) NULL ,
    [TOTAL] [numeric](16, 2) NULL ,
    [NO_LICITACION] [nvarchar] (15) COLLATE Traditional_Spanish_CI_AS NULL ,
    [NUM_PROVEEDOR] [nvarchar] (8) COLLATE Traditional_Spanish_CI_AS NULL ,
    [FECHA_FIRMA] [smalldatetime] NULL ,
    [FECHA_TERMINACION] [smalldatetime] NULL ,
    [RFC_PROVEEDOR] [nvarchar] (15) COLLATE Traditional_Spanish_CI_AS NULL 
) ON [PRIMARY]
GO

y la tabla drecibos(correspondiente al detalle de recibos) de la siguiente forma

Código SQL [-]
CREATE TABLE [dbo].[dcontratos] (
    [ID_RECIBO] [int] IDENTITY (1, 1) NOT NULL ,
    [FOLIO] [numeric](18, 0) NULL ,
    [MES] [numeric](18, 0) NULL ,
    [ANIO] [numeric](18, 0) NULL ,
    [NO_CONTRATO] [nvarchar] (30) COLLATE Traditional_Spanish_CI_AS NULL ,
    [GPO] [nvarchar] (3) COLLATE Traditional_Spanish_CI_AS NULL ,
    [GEN] [nvarchar] (3) COLLATE Traditional_Spanish_CI_AS NULL ,
    [ESP] [nvarchar] (4) COLLATE Traditional_Spanish_CI_AS NULL ,
    [DIF] [nvarchar] (2) COLLATE Traditional_Spanish_CI_AS NULL ,
    [VAR] [nvarchar] (2) COLLATE Traditional_Spanish_CI_AS NULL ,
    [CONCEPTO] [nvarchar] (50) COLLATE Traditional_Spanish_CI_AS NULL ,
    [CANT_MAX] [numeric](10, 0) NULL ,
    [CANT_MIN] [numeric](10, 0) NULL ,
    [PRECIO_CLAVE] [float] NULL ,
    [DESCUENTO] [float] NULL ,
    [IMP_PENA_MAX] [numeric](16, 2) NULL ,
    [PRECIO_NETO] [float] NULL 
) ON [PRIMARY]
GO

ahora bien genero la siguiente consulta
Código SQL [-]
SELECT     dbo.mcontratos.ID_RECIBO, dbo.mcontratos.FOLIO, dbo.mcontratos.MES, dbo.mcontratos.ANIO,
 dbo.mcontratos.NO_CONTRATO, dbo.mcontratos.FECHA_PAGO, 
                      dbo.mcontratos.USUARIO, dbo.mcontratos.DESCUENTO, 
dbo.mcontratos.SUBTOTAL, dbo.mcontratos.TOTAL, dbo.dcontratos.CONCEPTO, 
                      dbo.dcontratos.PRECIO_CLAVE
FROM         dbo.mcontratos LEFT OUTER JOIN
                      dbo.dcontratos ON dbo.mcontratos.FOLIO = dbo.dcontratos.FOLIO 
AND dbo.mcontratos.MES = dbo.dcontratos.MES AND 
                      dbo.mcontratos.ANIO = dbo.dcontratos.ANIO

hasta aqui ningun problema pero cuando trato de agregar el campo de no_contrato y ponerle una condicion ya no me muestra el resultado.

esta es la consulta que ejecuto y no me regresa resultado alguien me podria ayudar
Código SQL [-]
SELECT     dbo.mccontratos.ID_RECIBO, dbo.mccontratos.FOLIO, dbo.mccontratos.MES, dbo.mccontratos.ANIO, dbo.mccontratos.NO_CONTRATO, dbo.mccontratos.FECHA_PAGO, 
                      dbo.mccontratos.USUARIO, dbo.mccontratos.DESCUENTO, dbo.mccontratos.SUBTOTAL, dbo.mccontratos.TOTAL, dbo.adq_clave_contrato.CONCEPTO, 
                      dbo.adq_clave_contrato.PRECIO_CLAVE
FROM         dbo.mccontratos LEFT OUTER JOIN
                      dbo.adq_clave_contrato ON dbo.mccontratos.NO_CONTRATO = dbo.adq_clave_contrato.NO_CONTRATO AND 
                      dbo.mccontratos.FOLIO = dbo.adq_clave_contrato.FOLIO AND dbo.mccontratos.MES = dbo.adq_clave_contrato.MES AND 
                      dbo.mccontratos.ANIO = dbo.adq_clave_contrato.ANIO
WHERE     (dbo.mccontratos.MES = 1) AND (dbo.mccontratos.ANIO = 2009) AND (dbo.mccontratos.FOLIO = 1) AND (dbo.mccontratos.NO_CONTRATO = N'SAP-C2009111104')
Responder Con Cita
  #6  
Antiguo 13-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Así a simple vista sólo se me ocurre que pongas entre paréntesis todo el 'join'.
Y existen datos para que devuelva algo con esos parámetros?

Código SQL [-]
SELECT     dbo.mccontratos.ID_RECIBO, dbo.mccontratos.FOLIO, dbo.mccontratos.MES, dbo.mccontratos.ANIO, dbo.mccontratos.NO_CONTRATO, dbo.mccontratos.FECHA_PAGO, 
                      dbo.mccontratos.USUARIO, dbo.mccontratos.DESCUENTO, dbo.mccontratos.SUBTOTAL, dbo.mccontratos.TOTAL, dbo.adq_clave_contrato.CONCEPTO, 
                      dbo.adq_clave_contrato.PRECIO_CLAVE
FROM         dbo.mccontratos LEFT OUTER JOIN
         (
                      dbo.adq_clave_contrato ON dbo.mccontratos.NO_CONTRATO = dbo.adq_clave_contrato.NO_CONTRATO AND 
                      dbo.mccontratos.FOLIO = dbo.adq_clave_contrato.FOLIO AND dbo.mccontratos.MES = dbo.adq_clave_contrato.MES AND 

                      dbo.mccontratos.ANIO = dbo.adq_clave_contrato.ANIO
          )
WHERE     (dbo.mccontratos.MES = 1) 
AND       (dbo.mccontratos.ANIO = 2009) 
AND       (dbo.mccontratos.FOLIO = 1) 
AND       (dbo.mccontratos.NO_CONTRATO = 'SAP-C2009111104')
Responder Con Cita
  #7  
Antiguo 13-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Gracias Casimiro

los datos que tengo en mi tabla son los que agregue al inicio en el archivo de excel.

y en efecto existen datos para que me devuela una consulta


tendrias alguna idea del por que?
o podrias pasarme un ejemplo de maestro detalle.

gracias por tomarte la molestia de contestar desde mexico gracias
Responder Con Cita
  #8  
Antiguo 13-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tienes estos datos en las tablas, nada más, no?
Es que parece que sólo hay 3 registros en "detalles", y no veo nada en "maestro".




p.d.: que un moderador habilite la imágenes en este foro, por favor

Última edición por Casimiro Notevi fecha: 13-04-2010 a las 21:57:34.
Responder Con Cita
  #9  
Antiguo 13-04-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Tienes blancos y basura al menos en el campo contrato.

Por eso seguramente no te ofrezca ningún registro.

Revísalo y nos comentas.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #10  
Antiguo 14-04-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Thumbs up Listo

despues de tanto batallar con la consulta que hice, me doy cuenta que en muchas ocasioens hay que revisar el codigo de inserccion, y lo que estaba haciendo es que cuanto hacia el for para insertar los registros en la tabla detalle. insertaba un espacio al final de cada contrato solucionado esto me regresa los datos que necesito muchas gracias por responder y bueno hay que cometer menos errores.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda consulta sargento elias SQL 2 11-03-2009 16:48:49
Como Hacer La Siguiente Consulta... rgstuamigo MySQL 2 11-09-2008 22:19:33
Buscar siguiente SQL paladincubano SQL 4 12-03-2008 20:06:34
sabel el siguiente tab? raudelink Varios 2 26-04-2005 01:40:28
encontrar el siguiente en ado jzginez Conexión con bases de datos 1 21-05-2004 11:42:08


La franja horaria es GMT +2. Ahora son las 10:02:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi