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

SQL प्रारंभ और समाप्ति के बीच के समय पर तालिकाओं में शामिल हों

यह थोड़ा अटपटा है, लेकिन यहाँ मैं इसके साथ आया हूँ:

SELECT
    *
FROM
    (
        SELECT
            a.ID AS EventID,
            b.ID AS VideoID,
            b.Filename,
            (
                CASE
                    WHEN a.Time < b.StartTime THEN UNIX_TIMESTAMP(b.StartTime) - UNIX_TIMESTAMP(a.Time)
                    WHEN a.Time > b.EndTime THEN UNIX_TIMESTAMP(a.Time) - UNIX_TIMESTAMP(b.EndTime)
                END
            ) AS distance_factor
        FROM
            `Events` a
        CROSS JOIN
            video b
        WHERE
            NOT EXISTS
            (
                SELECT NULL
                FROM Video
                WHERE a.Time BETWEEN StartTime AND EndTime
            )
    ) c
WHERE 
    c.distance_factor = 
    (
        SELECT
            MIN(CASE WHEN d.Time < e.StartTime THEN UNIX_TIMESTAMP(e.StartTime) - UNIX_TIMESTAMP(d.Time) WHEN d.Time > e.EndTime THEN UNIX_TIMESTAMP(d.Time) - UNIX_TIMESTAMP(e.EndTime) END)
        FROM
            `Events` d
        CROSS JOIN
            video e
        WHERE d.ID = c.EventID
    )
GROUP BY
    c.EventID

यह उन ईवेंट को लौटाता है जिनकी तिथियां किसी भी वीडियो की किसी भी समय सीमा के बीच नहीं आती हैं, लेकिन फिर उस वीडियो को लौटाती हैं जो उस ईवेंट दिनांक के सबसे निकट आता है।

अभी केवल एक ही बात है कि कुछ वीडियो ऐसे हैं जिनमें सेकंड का अंतर बिल्कुल समान है। मैं नहीं जानता कि क्या आप चाहते हैं कि यह 2 पंक्तियाँ लौटाए, लेकिन अभी के लिए, मैंने केवल एक को चुनने के लिए GROUP BY में रखा है।

मुझे बताएं कि यह कैसे काम करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php . में प्रपत्र इनपुट सरणियों के माध्यम से लूप

  2. यह निर्धारित करने के लिए कि क्या एक MySQL अद्यतन क्वेरी सफल हुई है जब क्वेरी में पास किया गया डेटा वही है जो पहले से डेटाबेस में है?

  3. विंडोज 10 पर कार्यक्षेत्र के साथ MySQL 8 कैसे स्थापित करें

  4. Mysql के साथ बहुत बड़े डेटा को संभालना

  5. MySQL प्रतिकृति:अस्थायी रूप से विशिष्ट SQL कथनों को दासों की नकल करने से रोकें?