SQL - Traer los viajes que no se facturaron

 
Vista:
Imágen de perfil de Francisco
Val: 16
Ha aumentado su posición en 6 puestos en SQL (en relación al último mes)
Gráfica de SQL

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:


baseDeDatosPractica

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder