sql >> Databáze >  >> RDS >> Mysql

HQL / JPA najít dostupné položky mezi obdobím

Vidím, že váš dotaz je správný.

Ale pokud chcete vybírat na základě ID vozu, měli byste do dotazu přidat také ID vozu jako podmínku

Například

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

NEBO to můžete udělat taky tak

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

pak musíte předat :carId hodnota se rovná 2

AKTUALIZACE

můžete zkusit tento SQL dotaz, pokud potřebujete získat dynamický výsledek, brzy jej aktualizuji pomocí 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) 

ZDE jsou JPQL taky

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. Najděte název hostitele a port pomocí příkazů PSQL

  2. Jak získat data pomocí>=AND <=ve formátu 12 hodin v php/mysql?

  3. Vyloučit výsledky řádků, které mají v libovolném poli hodnotu NULL?

  4. Ukládání švédských znaků do databáze mysql