• 29-12-2014, 18:41:03
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaslar.

    Ben rezervasyon hakkında bir calisma yapiyorum.

    Mesela uye 2014-12-29 ve 2015-01-03 tarihleri arasında rezervasyon yaptı.

    Bu veritabanına giriş ve çıkış tarihi olarak eklendi.

    Peki baska bir uye geldi, o da 2014-12-30 ve 2015-01-01 arasinda rezervasyon yapmak istedi fakat rezervasyon yapamayacak ? Çünkü rezervasyon yapılmak istenen tarih ilk uyenin rezervasyon yaptıgı tarihlerin arasında.

    Bunu nasıl saglayabilirim :S
  • 29-12-2014, 18:51:57
    #2
    ||||||||||||||||||||||||||||||||||| => Rezervasyon Yapılmış Dolu Tarihler
    -------- ||||||||||||||||||||||||||||||||||||||| => Rezervasyon Yapılmak İstenen Tarihler
    Dikey çizgiler dolu tarihler
    Yatay çizgiler boş seçilmemiş tarihler

    Yani rezervasyon yapılmak istenen tarihin başlangıç tarihi dolu tarihle kesişmemesi lazım.

    SELECT * FROM Rezervasyonlar
    WHERE 'rezervasyon yapılmak istenen tarihin baslangic tarihi' BETWEEN giris AND cikis;

    Bu sorgudan eğer değer geliyorsa kullanıcı bu tarihe kayıt olamaz
  • 29-12-2014, 19:06:42
    #3
    Sable adlı üyeden alıntı: mesajı görüntüle
    ||||||||||||||||||||||||||||||||||| => Rezervasyon Yapılmış Dolu Tarihler
    -------- ||||||||||||||||||||||||||||||||||||||| => Rezervasyon Yapılmak İstenen Tarihler
    Dikey çizgiler dolu tarihler
    Yatay çizgiler boş seçilmemiş tarihler

    Yani rezervasyon yapılmak istenen tarihin başlangıç tarihi dolu tarihle kesişmemesi lazım.

    SELECT * FROM Rezervasyonlar
    WHERE 'rezervasyon yapılmak istenen tarihin baslangic tarihi' BETWEEN giris AND cikis;

    Bu sorgudan eğer değer geliyorsa kullanıcı bu tarihe kayıt olamaz
    Tesekkur ederim orasi oldu.
    Fakat bu seferde mesela oda 1 icin kayıt olduk. sorguluyoruz tarihleri tamam arasında kayıt olamazsınız diyor.

    fakat oda 2 yi boş orayi alabilir o tarihlerde, bu sefer orayi aldirtmiyor :S
  • 29-12-2014, 19:11:41
    #4
    Tablo yapını paylaşabilir misin?
  • 29-12-2014, 19:17:10
    #5
    Sable adlı üyeden alıntı: mesajı görüntüle
    Tablo yapını paylaşabilir misin?
    Member Tablosu
    MemberID
    Name
    SurName
    Password
    Email

    Room Tablosu
    RoomID
    RoomType
    BedType
    RoomRate
    RoomEx

    Rezerve Tablosu
    ResID
    Room_ID (buraları iliskiler icin kullanacam)
    Member_ID (buraları iliskiler icin kullanacam)
    CheckIn (giriş tarihi)
    CheckOut (cikis tarihi)
  • 29-12-2014, 19:24:25
    #6
    Join ile tabloları birleştirerek yapabilirsin.

    SELECT Rezerve.*, Room.*
    FROM Rezerve, Room
    INNER JOIN Room ON Room.RoomID = Rezerve.ResID
    WHERE 'rezervasyon yapılmak istenen tarihin baslangic tarihi' BETWEEN Rezerve.CheckIN AND Rezerve.CheckOut;
  • 29-12-2014, 19:42:00
    #7
    Sable adlı üyeden alıntı: mesajı görüntüle
    Join ile tabloları birleştirerek yapabilirsin.

    SELECT Rezerve.*, Room.*
    FROM Rezerve, Room
    INNER JOIN Room ON Room.RoomID = Rezerve.ResID
    WHERE 'rezervasyon yapılmak istenen tarihin baslangic tarihi' BETWEEN Rezerve.CheckIN AND Rezerve.CheckOut;
    Yine aynı durum hocam.
    Misal oda 1 icin;
    giris : 2014-01-01
    cikis : 2014-01-05

    oda 2 icin seçim yapıp
    giris : 2014-01-01
    cikis : 2014-01-05

    bunu seçtigimde hata vermemesi lazim veriyor.(hata derken kayıt etmiyor)

    Ayrica sadece baslangic tarihine gore vermissiniz, baslangic tarihi araya gelmez de cikis tarihi araya gelirse ne olacak hocam iki tane where kullanamıyoruz sanırım :S

    edit: o baslangic ve bitis olayini da cozdum. birtek oda işi kaldı. farklı odadan da aynı tarihlerde işlem yaptırabilirsem tamamdir.

    select * from rezerve where ('$girisTar' BETWEEN CheckIn and CheckOut)
        OR ('$cikisTar' BETWEEN CheckIn and CheckOut)