Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL Gabung tabel pada Waktu Antara Awal dan Akhir

Agak kikuk, tapi inilah yang saya dapatkan:

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

Ini mengembalikan acara yang tanggalnya tidak jatuh di antara rentang waktu video mana pun, tetapi kemudian mengembalikan video yang jatuh paling dekat dengan tanggal acara tersebut.

Satu-satunya hal saat ini adalah ada beberapa video di mana perbedaan detiknya persis sama. Saya tidak tahu apakah Anda ingin mengembalikan 2 baris, tetapi untuk saat ini, saya memasukkan GROUP BY untuk memilih satu saja.

Beri tahu saya cara kerjanya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. konfigurasi instalasi server mysql gagal ATAU tidak dapat memulai layanan

  2. Fungsi eksekusi mana yang harus saya gunakan di konektor MySQL/c++?

  3. mysql cte. menggunakan dengan dan menyisipkannya memperingatkan kesalahan sintaksis

  4. Bagaimana cara menginstal driver pdo di gambar buruh pelabuhan php?

  5. Saya mendapat nilai kosong dari database di laravel di pilih