• 12-02-2015, 21:57:48
    #1
    Merhaba, Bir Sql sorgusu yapmam lazım amma sql'im o kadar iyi değil.

    İki tablom var

    Birisi villalar diğeri villa rezervasyonları.

    Villalar tablomdaki alanlar -> VillaID, VillaBASLIK
    Villa rezervasyonları tablomda yer alan alanlar ->RezervasyonID,VillaID,RezervasyonBASLA,Rezervasyo nBITIS

    Yapmak istediğim şey değilse betwen yani arasında değilse işlemi. Eğer rezervasyon tablosunda x villasına ait örneğin 25.07.2015 tarihinde başlayan 26.06.2015 tarihinde biten bir rezervasyon varsa ve formdaki date alanlarından bu tarihler arasında kalan herhangi bir tarih seçilmişse bu villa gelmeyecek ama eğer rezervasyon tablosunda x villasına ait bir kayıt yoksa veya formdan gelen alanlar arasında kalmayan bir rezervasyon varsa villayı çeksin istiyorum.

    Bu sorguyu nasıl yaparım ?

    Şimdiden teşekkürler.
  • 13-02-2015, 11:21:50
    #2
    @Bay_Keskin,
    Yapmak istediğiniz seçili tarihler arasında rezervasyon varsa o villanın gösterilmemesi sanırım.

    SELECT a.* FROM Villalar a
    LEFT JOIN Rezervasyonlar b ON a.VillaID = b.VillaID
    WHERE 1
    AND 
    (
        b.RezervasyonID is null
        OR 
        (
    		!(DATE_FORMAT(b.RezervasyonBASLA,'%Y%m%d') >= '20150225')
    		AND
    		!(DATE_FORMAT(b.RezervasyonBITIS,'%Y%m%d') >= '20150230')
    	)
    )
  • 13-02-2015, 11:34:41
    #3
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    @Bay_Keskin,
    Yapmak istediğiniz seçili tarihler arasında rezervasyon varsa o villanın gösterilmemesi sanırım.

    SELECT a.* FROM Villalar a
    LEFT JOIN Rezervasyonlar b ON a.VillaID = b.VillaID
    WHERE 1
    AND 
    (
        b.RezervasyonID is null
        OR 
        (
    		!(DATE_FORMAT(b.RezervasyonBASLA,'%Y%m%d') >= '20150225')
    		AND
    		!(DATE_FORMAT(b.RezervasyonBITIS,'%Y%m%d') >= '20150230')
    	)
    )
    Merhaba cevap için teşekkür ederim hocam fakat işe yaramadı. Hiç rezervasyon olmayan bir tarihi seçtim ama rezervasyon tablosunda başka tarihler arasında rezerve edilmiş kayıtı çekmedi.
  • 13-02-2015, 11:43:32
    #4
    Bay_Keskin adlı üyeden alıntı: mesajı görüntüle
    Merhaba cevap için teşekkür ederim hocam fakat işe yaramadı. Hiç rezervasyon olmayan bir tarihi seçtim ama rezervasyon tablosunda başka tarihler arasında rezerve edilmiş kayıtı çekmedi.
    İlgili kısımları tablonuza göre uyarladıysanız seçili olmayan kısımların çıkması lazım

    2 tabloyu içerikle ya da sql ile paylaşın isterseniz.
  • 13-02-2015, 11:59:07
    #5
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    İlgili kısımları tablonuza göre uyarladıysanız seçili olmayan kısımların çıkması lazım

    2 tabloyu içerikle ya da sql ile paylaşın isterseniz.
    Villalar Tablom


    Rezervasyon Tablom Hocam


    Form'dan aldığım değerler;

    $bastar = $_POST["bastar"];
    $bittar = $_POST["bittar"];

    Şimdi ben diyorum ki Villalar tablosunda var olan bir kayıta ait rezervasyon rezervasyonlar tablosunda yoksa yani o villaya dair bugüne kadar hiç rezervasyon isteği gelmemişse formdan gelen tarihler ne olursa olsun o villa gelecek.

    2. Husus şu diyelim ki 1. villaya ait rezervasyon tablomda şu kayıt var
    RezervasyonID = 1
    VillaID=1
    RezervasyonBASLA = 25.07.2015
    RezervasyonBITIS = 26.08.2015

    Formdan eğer başlangıç tarihi 27.07.2015 tarihinde başlayan ve 29.08.2015 tarihinde biten bir rezervasyon isteği aranmışsa 1. villa gelmeyecek çünkü başlangıç tarihi var olan kayıtın arasında kalıyor

    Ama, 25.07.2014 tarihinde başlayan ve 26.08.2014 tarihinde biten bir rezervasyon isteği varsa 1. villa gelecek çünkü o tarihlerle ilişkili bir kayıt rezervasyon tablosunda yok.