sql >> Database >  >> RDS >> Mysql

HQL / JPA zoek beschikbare items tussen datumbereik

Ik zie dat uw vraag correct is.

Maar als u wilt selecteren op basis van auto-ID, moet u ook auto-ID als voorwaarde toevoegen aan uw zoekopdracht

Bijvoorbeeld

SELECT b.id, b.startDate, b.endDate, b.car.id
FROM BorrowedDate b
WHERE :userDateStart NOT BETWEEN b.startDate AND b.endDate
AND :userDateEnd NOT BETWEEN b.startDate AND b.endDate
AND b.car.id = :carId

OF je kunt het ook zo doen

SELECT b.id, b.startDate, b.endDate, c.id
FROM BorrowedDate b INNER JOIN b.car c
WHERE :userDateStart NOT BETWEEN b.startDate AND b.endDate
AND :userDateEnd NOT BETWEEN b.startDate AND b.endDate
AND c.id = :carId

dan moet je :card-waarde is gelijk aan 2

UPDATE

je kunt deze SQL-query proberen als je resultaat dynamisch wilt krijgen, ik zal het binnenkort bijwerken met JPQL

SELECT b.id, b.startDate, b.endDate, b.car.id
FROM BorrowedDate b
WHERE '2017-04-02 00:00:00' NOT BETWEEN b.startDate AND b.endDate
AND '2017-04-10 00:00:00' NOT BETWEEN b.startDate AND b.endDate
AND b.car.id NOT IN (SELECT DISTINCT bd.car.id FROM BorrowedDate bd WHERE '2017-04-02 00:00:00' BETWEEN bd.startDate AND bd.endDate OR '2017-04-10 00:00:00' BETWEEN bd.startDate AND bd.endDate) 

HIER zijn JPQL ook

SELECT model.id, model.startDate, model.endDate, model.car.id
FROM BorrowedDate model
WHERE :userDateStart NOT BETWEEN model.startDate AND model.endDate
AND :userDateEnd NOT BETWEEN model.startDate AND model.endDate
AND model.car.id NOT IN (SELECT DISTINCT b.car.id FROM BorrowedDate b WHERE :userDateStart BETWEEN b.startDate AND b.endDate OR :userDateEnd BETWEEN b.startDate AND b.endDate)


  1. SQRT() Voorbeelden in SQL Server

  2. MySQL-gemiddelde elke 4 rijen

  3. Laravel-toestemming geweigerd op externe Mysql-server (AWS aurora)

  4. SQL-fout Ik kom er niet uit