Traer los viajes que no se facturaron
Publicado por Francisco (1 intervención) el 27/03/2020 02:59:02
Hola. Esta es mi base de datos:

Lo que quiero hacer es traer todos los viajes que no se facturaron. Es decir, por ej.
Viaje 1 no fue facturado y no estaría relacionado con factura. Al hacer un join que lo más correcto sería hacer un left join, Viaje 1 tendría todos los campos NULL en DetalleFactura.
Entonces mi consulta inicial sería:
De esta forma traería los viajes que no fueron facturados.
Pero si yo quiero saber a qué factura están enlazado sus respectivos detalles incluyendo los viajes que no se facturaron, la consulta sería:
Hice el join que si se pone solo toma por defecto inner join para vincular los detalles con sus respectivas facturas, omitiendo duplicados.
Ahora bien, si quiero obtener los viajes que no fueron facturados que hicieron todos los clientes, la consulta sería:
Es correcta esta última consulta?
Usé un left join para traer los viajes que tienen detalle de factura como los que no tienen, es decir, los no facturados y el right join lo usé para los clientes que no facturaron.
¿Es correcto todo lo que estoy diciendo?
En base a saber los viajes no facturados por todos los clientes, quiero saber si la última consulta está bien hecha. Para hacer el join hay que mirar el diagrama. No puedo hacer un join de un cliente con un viaje por que no están relacionados directamente, para eso, tengo que hacer las relaciones intermedias.
Desde ya, muchas gracias

Lo que quiero hacer es traer todos los viajes que no se facturaron. Es decir, por ej.
Viaje 1 no fue facturado y no estaría relacionado con factura. Al hacer un join que lo más correcto sería hacer un left join, Viaje 1 tendría todos los campos NULL en DetalleFactura.
Entonces mi consulta inicial sería:
1
select * from Viaje v left join DetalleFactura df on v.idViaje = df.idViaje
De esta forma traería los viajes que no fueron facturados.
Pero si yo quiero saber a qué factura están enlazado sus respectivos detalles incluyendo los viajes que no se facturaron, la consulta sería:
1
select * from Viaje v left join DetalleFactura df on v.idViaje = df.idViaje join Factura on df.idFactura = f.idFactura
Hice el join que si se pone solo toma por defecto inner join para vincular los detalles con sus respectivas facturas, omitiendo duplicados.
Ahora bien, si quiero obtener los viajes que no fueron facturados que hicieron todos los clientes, la consulta sería:
1
select * from Viaje v left join DetalleFactura df on v.idViaje = df.idViaje join Factura f on df.idFactura = f.idFactura right join Cliente c on f.idCliente = c.idCliente
Es correcta esta última consulta?
Usé un left join para traer los viajes que tienen detalle de factura como los que no tienen, es decir, los no facturados y el right join lo usé para los clientes que no facturaron.
¿Es correcto todo lo que estoy diciendo?
En base a saber los viajes no facturados por todos los clientes, quiero saber si la última consulta está bien hecha. Para hacer el join hay que mirar el diagrama. No puedo hacer un join de un cliente con un viaje por que no están relacionados directamente, para eso, tengo que hacer las relaciones intermedias.
Desde ya, muchas gracias
Valora esta pregunta


0