Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

2 से अधिक उपयोगकर्ताओं के लिए मिलान समय अंतराल कैसे खोजें

यह जानने के लिए कि उपयोगकर्ता1 और उपयोगकर्ता2 दोनों कब निःशुल्क हैं, कृपया नीचे प्रयास करें:

select 
a.datetime_start as user1start,a.datetime_end as user1end,
b.datetime_start as user2start,b.datetime_end as user2end ,
case when a.datetime_start > b.datetime_start then a.datetime_start 
   else b.datetime_start end as avail_start,
case when a.datetime_end>b.datetime_end then b.datetime_end 
   else a.datetime_end end as avail_end
from users a inner join users b on
a.datetime_start<=b.datetime_end and a.datetime_end>=b.datetime_start     
and  a.userid={user1} and b.userid={user2}

यहां SQL FIDDLE.

संपादित:2 से अधिक उपयोगकर्ताओं की तुलना करने के लिए, कृपया नीचे प्रयास करें:

select max(datetime_start) as avail_start,min(datetime_end) as avail_end
from(
        select *,
        @rn := CASE WHEN @prev_start <=datetime_end and @prev_end >=datetime_start THEN @rn ELSE @rn+1 END AS rn,
        @prev_start := datetime_start,
        @prev_end := datetime_end 
        from(
          select * from users2 m
          where exists ( select null 
                          from users2 o 
                           where o.datetime_start <= m.datetime_end and o.datetime_end >= m.datetime_start
                           and o.id <> m.id 
                        ) 
             and m.userid in (2,4,3,5)
           order by m.datetime_start) t,
           (SELECT @prev_start := -1, @rn := 1, @prev_end=-1) AS vars 
) c 
group by rn 
having count(rn)=4 ;

m.userid in (2,4,3,5) में बदलने की आवश्यकता है और having count(rn)=4 उपयोगकर्ताओं की संख्या के अनुसार।

यहां SQL FIDDLE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize के साथ MySQL से कनेक्ट नहीं हो सकता

  2. MySQL समूह में अधिकतम के अनुरूप संपूर्ण पंक्ति प्राप्त करें का चयन करें

  3. दो अलग-अलग डेटाबेस में संग्रहीत दो तालिकाओं के बीच प्राथमिक कुंजी को समन्वयित करना

  4. MySQL डेटाबेस से पुनरावर्ती घटनाओं के साथ PHP कैलेंडर

  5. JSON_MERGE_PRESERVE () - MySQL में एकाधिक JSON दस्तावेज़ मर्ज करें