none
Error en consulta SQL, ayuda RRS feed

  • Pregunta

  • Buenos dias, tengo un problema y es el siguiente, yo tengo este codigo:

    create procedure Vdisponibles2 @Finicio date, @Ffin date AS
    begin
    select *
    from Vehiculo
    where MLetras   not in(
          select A.MLetras from Alquiler A where (@FFin > FechaInicio) and ( @FInicio < FechaFin ))
       and MDigitos not in(
      select A.MDigitos from Alquiler A where  (@FFin > FechaInicio) and ( @FInicio < FechaFin ))
      end
      go

    exec Vdisponibles2 '21001010' , '21901212'
    go

    MLetras y MDigitos son PK de la tabla vehiculos, lo que quiero es que me devuelva que vehiculos hay disponibles entre 2 fechas( osea que no estan alquilados) fecha inicio y fecha fin son de la tabla alquiler, el problema, es que mi profesora nos dice que MLetras y MDigitos no deberian ir por separado, porque ambas juntas son un dato unico, pero no quiere darnos mas ayuda que esa, estamos hace dos dias buscandole la vuelta y no podemos dar con lo que tenemos que modificar, agradeceria si alguien me diera una mano con eso, desde ya muchas gracias!

    martes, 17 de octubre de 2017 14:13

Respuestas

  • Trata:

    -- opcion 1
    select col1,...,coln
    from vehivulo as V
    where not exists (
    select *
    from alquiler as A
    where A.MLetras = V.MLetras and A.MDigitos = V.MDigitos
    and A.FechaIninio < @FFin and A.FechaFin > @FInicio
    );

    -- opcion 2
    select MLetras, MDigitos from vehiculo
    except
    select MLetras, MDigitos from alquiler where FechaIninio < @FFin and FechaFin > @FInicio;

    -- opcion 3
    select V.col1,...,V.coln
    from vehiculo as V left outer join alquiler as A
        on A.MLetras = V.MLetras and A.MDigitos = V.MDigitos
        and A.FechaIninio < @FFin and A.FechaFin > @FInicio
    where A.MLetras is null and A.MDigitos is null;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    • Marcado como respuesta chuko32 martes, 17 de octubre de 2017 16:05
    martes, 17 de octubre de 2017 15:28

Todas las respuestas