Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

HQL / JPA menemukan item yang tersedia di antara rentang tanggal

Saya melihat pertanyaan Anda benar.

Tetapi jika Anda ingin memilih berdasarkan id mobil maka Anda harus menambahkan id mobil sebagai syarat juga ke dalam permintaan Anda

Misalnya

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

ATAU Anda juga bisa melakukannya

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

maka Anda harus melewati :carId value sama dengan 2

PERBARUI

Anda dapat mencoba kueri SQL ini jika Anda perlu mendapatkan hasil yang dinamis, saya akan segera memperbaruinya dengan 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) 

DI SINI adalah JPQL juga

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih dari catatan ke-n dan seterusnya di MySQL

  2. Bergabunglah dengan seluruh tabel sebagai satu baris

  3. Menambahkan baris ke tabel dengan kolom unik:Dapatkan nilai ID yang ada plus yang baru dibuat

  4. XAMPP Berjalan sangat lambat dengan PHP/MySQL

  5. PDO Error - PDOException' dengan pesan 'SQLSTATE[HY000]:General error'