2016-11-27 53 views
2

我需要幫助以顯示所有可用的汽車與此代碼。MySql搜索可用的汽車與日期範圍獲得不同的值相同的ID

$query = "SELECT DISTINCT kendaraan.* FROM kendaraan 
    LEFT JOIN transaksi ON kendaraan.ID_Kendaraan = transaksi.ID_Kendaraan 
    WHERE (Tipe LIKE'%$tipemerk%' OR Merk LIKE '%$tipemerk%') AND ID_Tipe='$tipe' 
      AND COALESCE(transaksi.Tgl_Peminjaman NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE) 
      AND COALESCE(transaksi.Tgl_Pengembalian NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE) 
      AND COALESCE('$tglpergi' NOT BETWEEN transaksi.Tgl_Peminjaman AND transaksi.Tgl_Pengembalian, TRUE) 
      AND COALESCE('$tglkembali' NOT BETWEEN transaksi.Tgl_Peminjaman AND transaksi.Tgl_Pengembalian, TRUE)";  
    $result = mysqli_query($con,$query); 

我對transaksi(事務)數據庫:(Tgl_Peminjaman是開始日期和Tgl_Pengembalian是結束日期)

ID_Transaksi | ID_User | ID_Kendaraan | ID_Karyawan | Tgl_Peminjaman | Tgl_Pengembalian | Tgl_Transaksi | Tgl_Kembali | Total_Biaya | Bank | Status_Pembayaran | Denda_Keterlambatan | Status | Alamat_pengiriman      | Supir 
TR001  | NP002 | KDR001  |    | 2016-11-28  | 2016-11-28  | 2016-11-27 | 0000-00-00 |  500000 | BCA | Belum Bayar  |     0 | Diproses | jl. duri kosambi no 414 jakarta barat | Tidak 
TR002  | NP002 | KDR001  |    | 2016-11-29  | 2016-11-29  | 2016-11-27 | 0000-00-00 |  500000 | BNI | Belum Bayar  |     0 | Diproses | jl. duri kosambi no 414 jakarta barat | Tidak 

我的數據庫kendaraan(車輛):

ID_Kendaraan | ID_Tipe | Merk  | Tipe    | Tahun | CC | Warna   | KM | Foto     | Harga 
KDR001  | MBL  | Toyota  | Avanza   | 2016 | 1500 | Hitam   | 3231 | image/KDR001.png  | 500000 
KDR002  | MBL  | Toyota  | Avanza   | 2016 | 1500 | Biru   | 2900 | image/AVblue.png  | 450000 
KDR003  | MBL  | Toyota  | Avanza   | 2014 | 1500 | Putih   | 2900 | image/AVwhite.jpg  | 400000 
KDR004  | MBL  | Toyota  | Avanza   | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png  | 400000 
KDR005  | MBL  | Toyota  | Prius    | 2014 | 1300 | White   | 2900 | image/PRwhite.jpg  | 300000 

問題是我仍然得到相同的ID_Kendaraan與dif不值的價值。所以如果我搜索開始日期"2016-11-28"和結束日期「2016-11-28」,它仍然會顯示ID_Kendaraan with id = KDR001 , Tgl_Peminjaman = 2016-11-29 , and Tgl_Pengembalian = 2016-11-29

輸出我得到:

ID_Kendaraan | ID_Tipe | Merk | Tipe | Tahun | CC | Warna   | KM | Foto     | Harga | Tgl_Peminjaman | Tgl_Pengembalian 
KDR001  | MBL  | Toyota | Avanza | 2016 | 1500 | Hitam   | 3231 | image/KDR001.png  | 500000 | 2016-11-29  | 2016-11-29 
KDR002  | MBL  | Toyota | Avanza | 2016 | 1500 | Biru   | 2900 | image/AVblue.png  | 450000 | NULL   | NULL 
KDR003  | MBL  | Toyota | Avanza | 2014 | 1500 | Putih   | 2900 | image/AVwhite.jpg | 400000 | NULL   | NULL 
KDR004  | MBL  | Toyota | Avanza | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png | 400000 | NULL   | NULL 
KDR005  | MBL  | Toyota | Prius | 2014 | 1300 | White   | 2900 | image/PRwhite.jpg | 300000 | NULL   | NULL 

輸出我想:

ID_Kendaraan | ID_Tipe | Merk | Tipe | Tahun | CC | Warna   | KM | Foto     | Harga | Tgl_Peminjaman | Tgl_Pengembalian 
KDR002  | MBL  | Toyota | Avanza | 2016 | 1500 | Biru   | 2900 | image/AVblue.png  | 450000 | NULL   | NULL 
KDR003  | MBL  | Toyota | Avanza | 2014 | 1500 | Putih   | 2900 | image/AVwhite.jpg | 400000 | NULL   | NULL 
KDR004  | MBL  | Toyota | Avanza | 2014 | 1300 | Silver Metalic | 2900 | image/AVsilver.png | 400000 | NULL   | NULL 
KDR005  | MBL  | Toyota | Prius | 2014 | 1300 | White   | 2900 | image/PRwhite.jpg | 300000 | NULL   | NULL 

那麼如何得到我想要的輸出? 我不想顯示已預訂的汽車。 對不起我的英語不好,我的母語是印度尼西亞。

+0

恩,不用了,謝謝。請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry

回答

0

不確定爲什麼要在查詢中輸入NOT BETWEEN。我想你應該簡單地改變這樣的:(與交易發生日空出預訂的汽車和那些)

AND (transaksi.Tgl_Peminjaman IS NOT NULL OR transaksi.Tgl_Peminjaman >= '$tglpergi') 
AND (transaksi.Tgl_Pengembalian IS NOT NULL OR transaksi.Tgl_Pengembalian <= '$tglkembali') 

,或者這樣::(展示與交易發生日空汽車)

AND COALESCE(transaksi.Tgl_Peminjaman NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE) 
AND COALESCE(transaksi.Tgl_Pengembalian NOT BETWEEN '$tglpergi' AND '$tglkembali', TRUE) 

AND transaksi.Tgl_Peminjaman IS NULL 
AND transaksi.Tgl_Pengembalian IS NULL 
+0

感謝您的幫助:D,但是在我用您的代碼對其進行更改後,它只顯示了一輛有交易價值的車輛。 –

+0

mmm,該查詢顯示具有較早(或等於)最大和最小(或等於)最小值的車輛的日期。 不確定您是否只需要獲得空車日期? – piotr

+0

好吧,我需要得到所有可用的汽車,包括零。 :D –