SQL - consulta, en una tabla existe pero en otra no

 
Vista:

consulta, en una tabla existe pero en otra no

Publicado por OliBeer (3 intervenciones) el 06/03/2007 20:32:53
hola, tengo un problemilla, voy a dar un ejemplo: nececito hacer una consulta, tabla clientes, tabla facturas, traer todos los clientes, los que tengan facturas y tambien los que no. Lo que pasa es que si en la tabla de facturas no tengo registro de un cliente con una factura, ese cliente no me lo devuelve. gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta, en una tabla existe pero en otra no

Publicado por Isaías (5072 intervenciones) el 06/03/2007 21:23:04
Depende de tu query, ¿podemos verlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta, en una tabla existe pero en otra no

Publicado por olibeer (3 intervenciones) el 06/03/2007 21:36:18
SELECT dbo.Proyecto.Nombre AS NOMBRE_PROYECTO, dbo.Contratista.Nombre AS NOMBRE_CONTRATISTA, dbo.TipoContratoObra.Descripcion AS TIPO_CONTRATO, dbo.ContratoObra.Alcance ALCANCE_CONTRATO, dbo.ContratoObra.Anticipo AS ANTICIPO_CONTRATO,
dbo.ContratoObra.FchInicio AS FECHA_INICIO_CONTRATO, dbo.ContratoObra.FchTermino AS FECHA_FIN_CONTRATO, dbo.ContratoObra.FchContrato AS FECHA_CONTRATO, dbo.ContratoObra.Observaciones AS OBSERVACIONES_CONTRATO,
dbo.ContratoObra.MontoUrbanizacion AS MONTO_URBANIZACION_CONTRATO, dbo.ContratoObra.MontoEdificacion AS MONTO_EDIFICACION_CONTRATO

FROM dbo.Proyecto INNER JOIN
dbo.ContratoObra ON dbo.Proyecto.Id = dbo.ContratoObra.IdProyecto INNER JOIN
dbo.Contratista ON dbo.ContratoObra.IdContratista = dbo.Contratista.Id AND dbo.ContratoObra.IdContratista = dbo.Contratista.Id INNER JOIN
dbo.TipoContratoObra ON dbo.ContratoObra.IdTipoContratoObra = dbo.TipoContratoObra.Id


/*
hasta aqui me trae 3 filas, con los datos de los 3 contratos
pero a la hora de agregarle las siguientes 3 tablas para sacar los pagos, solo me trae el contrato que tiene pagos, lo que necesito es que me traiga, todos, lo que tienen y los que no
*/

SELECT dbo.Proyecto.Nombre AS PROYECTO, dbo.Contratista.Nombre AS CONTRATISTA, dbo.TipoContratoObra.Descripcion AS CONTRATO,
dbo.ContratoObra.Alcance AS ALCANCE_DEL_CONTRATO, dbo.ContratoObra.Anticipo AS ANTICIPO, dbo.ContratoObra.FchInicio AS FECHA_INICIO,
dbo.ContratoObra.FchTermino AS FECHA_FIN, dbo.ContratoObra.FchContrato AS FECHA_CONTRATO,
dbo.ContratoObra.Observaciones AS COMENTARIOS, dbo.ContratoObra.MontoUrbanizacion AS MONTO_URBANIZACION,
dbo.ContratoObra.MontoEdificacion AS MONTO_EDIFICACION, dbo.ContratoObra.MontoUrbanizacion + dbo.ContratoObra.MontoEdificacion AS MONTOS,
dbo.Estimacion.Numero AS NUMERO_ESTIMACION, dbo.Estimacion.FchEstimacion AS FECHA_ESTIMACION,
dbo.FacturaContratista.Monto AS MONTO_FACTURA, dbo.FacturaContratista.NumFactura AS NUMERO_FACTURA,
dbo.FacturaContratista.Concepto AS FACTURA_CONCEPTO, dbo.PagoContratista.FchPagoContratista AS FECHA_PAGO_CONRTATISTA,
dbo.PagoContratista.Monto AS PAGO_CONRTATISTA_MONTO, dbo.PagoContratista.Observaciones AS PAGO_CONTRATISTA_OBCERVACIONES,
dbo.FacturaPagoContratista.Monto AS FACTURA_PAGO_CONTRATISTA
FROM dbo.Proyecto INNER JOIN
dbo.ContratoObra ON dbo.Proyecto.Id = dbo.ContratoObra.IdProyecto INNER JOIN
dbo.Contratista ON dbo.ContratoObra.IdContratista = dbo.Contratista.Id AND dbo.ContratoObra.IdContratista = dbo.Contratista.Id INNER JOIN
dbo.TipoContratoObra ON dbo.ContratoObra.IdTipoContratoObra = dbo.TipoContratoObra.Id INNER JOIN
dbo.Estimacion ON dbo.ContratoObra.IdContratoObra = dbo.Estimacion.IdContratoObra INNER JOIN
dbo.FacturaContratista ON dbo.Estimacion.IdEstimacion = dbo.FacturaContratista.IdEstimacion INNER JOIN
dbo.FacturaPagoContratista ON dbo.FacturaContratista.IdFacturaContratista = dbo.FacturaPagoContratista.IdFacturaContratista INNER JOIN
dbo.PagoContratista ON dbo.FacturaPagoContratista.IdPagoContratista = dbo.PagoContratista.IdPagoContratista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta, en una tabla existe pero en otra no

Publicado por Isaías (5072 intervenciones) el 07/03/2007 00:09:59
Cambia tu INNER JOIN, por RIGHT OUTER JOIN o bien por FULL JOIN, solo que este ultimo, te pondra en NULL los registros de las tablas que NO existan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar