[Help] SQL : Tìm Kiếm Phòng Trống

Vu Hoang

New Member
4/3/14
14
0
1
Mình đang làm dự án về Khách sạn vấn đề đặt ra đó là mình có một Function về tìm kiếm những phòng trống theo ngày . Mình mình cần phải cho 2 khoảng thời gian . VD : ngày vào(28/03/2014) , ngày ra(02/04/2014) sau đó dùng câu lệnh SQL để tìm kiếm các phòng trống theo thời gian mình đã cho vào như ở trên . Mình làm cần phải làm việc với 2 table trong CSDL :
table :đặt phong "utilisation_chambre"
table : phòng. "date_chambre"

Code:
 public ArrayList<date_chambre> RechercheChambreLibreDansList(String type_chambre){
        
         ArrayList<date_chambre> mylist_ch = new ArrayList();
         String req= "SELECT num_date_chambre , nom_chambre,nom_type_chambre , zone_chambre FROM date_chambre D , utilisation_chambre U"
                 + " WHERE  D.date_debut NOT IN (U.date_debut_util_ch and U.date_fin_util_ch)"
                 + " AND    D.date_fin   NOT IN (U.date_debut_util_ch and U.date_fin_util_ch)"
                 + " AND    D.nom_type_chambre = '"+type_chambre+"'"
                 + " ORDER BY 1";
        System.out.println("Chambre "+req);
      ResultSet resu = DaoConnexionMySQL.getInstance().selectQuery(req);
      try
      {
        while(resu.next())
        {
          mylist_ch.add(new date_chambre(resu.getInt(1),resu.getString(2),resu.getString(3),resu.getString(4)));
        }
      }
      catch(SQLException e )
      {
        System.out.println(e.toString());
        System.exit(-1);
      }
      return mylist_ch;
    }

Bạn nào có thể đưa đưa hộ mình thuật toán để tìm kiếm phòng như thế đc ko .
Điều quan trọng đó là nều chọn cùng một phòng nhưng không được trùng ngày .
Vd : ngày vào(28/03/2014) , ngày ra(02/04/2014) phòng 3 , nếu đã đc chọn thì phòng đó sẽ không hiện lên nữa .
Cám ơn các bạn nhiều
 
Sửa lần cuối:

Vu Hoang

New Member
4/3/14
14
0
1
Chưa hiểu lắm @@
Bạn không hiểu như thế nào .
VD : phòng số 3 đã có đặt phòng vào ngày 28-03 đến 29-03 . Bây giờ mình muốn tiếp tục đặt phòng vào ngày 28-03 đến ngày 29-03 , mình tìm kiếm phòng trống , vì phòng số 3 đã đc đặt vào ngày 28-03 đến 29-03 nên nó sẽ không hiện lên trong bảng tìm kiếm nữa .
 

Vu Hoang

New Member
4/3/14
14
0
1
Mình xử lý đc rồi thanks .
Code:
"SELECT DISTINCT  nom_chambre,T.nom_type_chambre , zone_chambre "
                 + "FROM chambre D ,type_chambre T ,utilisation_chambre U"
                 + " WHERE  EXISTS(SELECT * FROM utilisation_chambre U "
                 + " WHERE (D.date_debut < U.date_debut_util_ch AND D.date_fin < U.date_fin_util_ch)"
                 + " OR (D.date_debut > U.date_debut_util_ch AND D.date_fin > U.date_fin_util_ch)"
                 + " AND D.date_debut = '"+datebegin+"'"
                 + " AND D.date_fin = '"+dateend+"'"
                 + " AND D.num_chambre  = U.num_chambre_util_ch"
                 + ") AND T.nom_type_chambre = '"+type_chambre+"'"
                 + " AND D.num_type_chambre = T.num_type_chambre";
 
Sửa lần cuối: