Mysql Sorgusu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek

    #Odalar (Tablo)

    ID ODAADI

    1 ODA1
    2 ODA2
    3 ODA3

    #Rezervasyonlar

    ID ODAID GIRIS CIKIS

    1 1 2021-01-01 2021-01-12

    2 1 2021-02-01 2021-02-15

    3 2 2021-01-05 2021-01-31

    4 1 2021-03-01 2021-03-15

    5 3 2021-01-09 2021-02-15

    6 3 2021-05-01 2021-05-15

    7 2 2021-02-18 2021-02-28

    8 1 2021-09-14 2021-10-15

     

    yukarıdaki şekilde mysql tablom var ben tarih aralıgı girerek oda1,2,3 ün kac gün dolu olduğunu sayı olarak listemek istiyorum. bunu nasıl yapabiliriz hocalar?

    Liste yaparkende 2021-01-01 ile 2021-01-20 tarihleri arası sorgu yaptıgımda

    ODA1 - 12 Gün
    ....
    şeklinde odaların o tarihler arası kac gün dolu olmus nasıl yaparım tşkler..

     

     

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek

    cıkıs > aralık baslangıç

    giris < aralik bitis 

    olanları

     

    topla ( DATEDIFF( eğer(aralik bitis  < cıkıs  , aralik bitis , cıkıs )  ,  eğer(aralık baslangıç>giris  , aralık baslangıç ,giris)    ) )

     

    grupla odaid

     

     

    wert tarafından 08/Nis/21 22:48 tarihinde düzenlenmiştir

    |sadece aptalların başarısı ders notu ile ölçülür|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek
    wert bunu yazdı

    cıkıs > aralık baslangıç

    giris < aralik bitis 

    olanları

     

    topla ( DATEDIFF( eğer(aralik bitis  < cıkıs  , aralik bitis , cıkıs )  ,  eğer(aralık baslangıç>giris  , aralık baslangıç ,giris)    ) )

     

    grupla odaid

     

     

    SUM(DATEDIFF(if('2021-01-01' < cikis, '2021-01-01' , cikis) , if('2021-01-10' > giris , '2021-01-10' ,giris))) topla

     

    bu sekilde denedim ama olmuyor oda1 i - olarak farklı sayılar veriyor..

    burda yapmak istediğiim olay söyle oda1,2,3 de rezler var ben bi tarih arası giricem o tarih arasında rez varsa tarih aralıgında saayısını verecek .

     

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    select 
    	oda_id,
    	SUM( DATEDIFF( IF('2021-01-20'  < cikis  , '2021-01-20' , cikis )  ,  IF('2021-01-01'>giris  , '2021-01-01' ,giris)    ) )
    from 
    	oda
    where 
    	cikis > '2021-01-01' AND
    	giris < '2021-01-20'
    GROUP BY
    	oda_id

     

    şartları yerleştirdinmi?

    büdüt : birde sum+1 koyman gerekebilir bilir çünkü

    1'inden 5 kadar kullanılsın oda 

    5-1 = 4 geçmiş üstünden fakat oda 5 gün kullanılmıştır o yüzden sum tarafına +1 mantıklı olabilir emin olamadım orası senin bileceğin nokta

    wert tarafından 09/Nis/21 00:21 tarihinde düzenlenmiştir

    |sadece aptalların başarısı ders notu ile ölçülür|
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Jinpachi
    Jinpachi's avatar
    Kayıt Tarihi: 02/Ekim/2017
    Erkek
    cybermole bunu yazdı

    SUM(DATEDIFF(if('2021-01-01' < cikis, '2021-01-01' , cikis) , if('2021-01-10' > giris , '2021-01-10' ,giris))) topla

     

    bu sekilde denedim ama olmuyor oda1 i - olarak farklı sayılar veriyor..

    burda yapmak istediğiim olay söyle oda1,2,3 de rezler var ben bi tarih arası giricem o tarih arasında rez varsa tarih aralıgında saayısını verecek .

     

    Kullanımı : DATEDIFF datepart , startdate , enddate )

     

    pek anlamam ama yukarıdaki formülde bir eksik var gibi


    Yaşa, Öl...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    Jinpachi bunu yazdı
    cybermole bunu yazdı

    SUM(DATEDIFF(if('2021-01-01' < cikis, '2021-01-01' , cikis) , if('2021-01-10' > giris , '2021-01-10' ,giris))) topla

     

    bu sekilde denedim ama olmuyor oda1 i - olarak farklı sayılar veriyor..

    burda yapmak istediğiim olay söyle oda1,2,3 de rezler var ben bi tarih arası giricem o tarih arasında rez varsa tarih aralıgında saayısını verecek .

     

    Kullanımı : DATEDIFF datepart , startdate , enddate )

     

    pek anlamam ama yukarıdaki formülde bir eksik var gibi

    başlıkta mysql sorgusu diyore müdür

    https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff

     


    |sadece aptalların başarısı ders notu ile ölçülür|
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek
    wert bunu yazdı
    select 
    	oda_id,
    	SUM( DATEDIFF( IF('2021-01-20'  < cikis  , '2021-01-20' , cikis )  ,  IF('2021-01-01'>giris  , '2021-01-01' ,giris)    ) )
    from 
    	oda
    where 
    	cikis > '2021-01-01' AND
    	giris < '2021-01-20'
    GROUP BY
    	oda_id

     

    şartları yerleştirdinmi?

    büdüt : birde sum+1 koyman gerekebilir bilir çünkü

    1'inden 5 kadar kullanılsın oda 

    5-1 = 4 geçmiş üstünden fakat oda 5 gün kullanılmıştır o yüzden sum tarafına +1 mantıklı olabilir emin olamadım orası senin bileceğin nokta

    hocam saolasın oldu..

Toplam Hit: 1534 Toplam Mesaj: 7
mysql