Ver Mensaje Individual
  #3  
Antiguo 21-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Primero y principal:
Creo que está mal hecho el sql.
La forma correcta de hacerlo debería ser así:

Código SQL [-]
select a.campo1,a.campo2,a.campo3,
         b.campo1,b.campo2,b.campo3,
         c.campo1,c.campo2,c.campo3
from tabla1 a
[left/right] join tabla2 b
on (a.campo1=b.campo1)
[left/right] join tabla3 c
on (b.campo1=c.campo1) and (b.campo2=c.campo2)
where
a.campo1=1234
Código SQL [-]
SELECT Factura.NumFactura, Factura.Fecha, Factura.Clicod, Clientes.Clinom, 
Clientes.Clidom, Clientes.Clicuit, Clientes.Clitel, Factura.Emplecod, Facdetalle.Codipro,
 Facdetalle.Concepto, Facdetalle.Cantidad, Facdetalle.Precio, Factura.SubTotal,
 Factura.Descuento, Factura.importetotal
FROM Stock 

RIGHT JOIN Clientes 
ON Stock.Procod = Facdetalle.Codipro;

RIGHT JOIN Factura 
ON Clientes.Clicod = Factura.Clicod) 

LEFT JOIN Facturadetalle 
ON (Factura.Tipofac = Facdetalle.Tipofac) AND (Factura.Numfactura = Facdetalle.Numfactura)) 

WHERE Factura.Numfactura=:Nrofact AND Factura.Tipofac=:TipoFact

Tambien deberías tener en cuenta el orden en que haces los joins. Sobre todo si son left o right join.
En este caso deberías poner primero From Facturas (porque filtras por su número y tipo) y esta factura unirla al resto de tablas (detalle,cliente,stock)
Tambien veo que no utilizas la tabla stock. Quizás no debas meterla en este select.

Código SQL [-]
SELECT Factura.NumFactura, Factura.Fecha, Factura.Clicod, Clientes.Clinom, 
Clientes.Clidom, Clientes.Clicuit, Clientes.Clitel, Factura.Emplecod, Facdetalle.Codipro,
 Facdetalle.Concepto, Facdetalle.Cantidad, Facdetalle.Precio, Factura.SubTotal,
 Factura.Descuento, Factura.importetotal
FROM Factura 

LEFT JOIN Facturadetalle 
ON (Factura.Tipofac = Facdetalle.Tipofac) AND (Factura.Numfactura = Facdetalle.Numfactura)) 

RIGHT JOIN Clientes 
ON Clientes.Clicod = Factura.Clicod) 

JOIN Stock
ON Stock.Procod = Facdetalle.Codipro;

WHERE Factura.Numfactura=:Nrofact AND Factura.Tipofac=:TipoFact

Última edición por duilioisola fecha: 21-11-2007 a las 21:48:41.
Responder Con Cita