Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. marikafreg
    3. Post
    M

    marikafreg

    @marikafreg

    • Profilo
    • Chi segue 0
    • Da chi è seguito 0
    • Discussioni 1
    • Post 1
    • Migliore 0
    • Gruppi 0
    Iscrizione Ultimo Accesso
    Località Venezia Età 39
    0
    Reputazione
    1
    Post
    0
    Visite al profilo
    0
    Da chi è seguito
    0
    Chi segue
    User Newbie

    Post creati da marikafreg

    • Ottimizzazione MySQL query NOT IN

      Ciao a tutti,
      sto tentando di estrarre dei dati da una tabella del mio db a diverse condizioni e in cui finora non mi ero mai cimentata.

      SELECT * FROM audio 
      WHERE NOW() BETWEEN audio_dataInizio AND audio_dataFine 
      AND clienti_id = 100 
      AND filiali_id = 500 
      AND audio_attivo = 1 
      AND FIND_IN_SET('2', audio_attivo_for_radio) <> 0 
      AND audio_id NOT IN ( SELECT audio_id FROM storico WHERE clienti_id=100 AND filiali_id = 500 AND audio_id!=0) 
      UNION ALL 
      SELECT * FROM audio 
      WHERE NOW() BETWEEN audio_dataInizio AND audio_dataFine 
      AND clienti_id = 100 
      AND audio_attivo = 1 
      AND audio_id!=0 
      AND NOT EXISTS ( SELECT * FROM audio 
      WHERE NOW() BETWEEN audio_dataInizio AND audio_dataFine 
      AND clienti_id = 100 
      AND filiali_id = 500 
      AND audio_attivo = 1 
      AND audio_id!=0 
      AND FIND_IN_SET('2', audio_attivo_for_radio) <> 0 
      AND audio_id NOT IN ( SELECT audio_id FROM storico WHERE clienti_id=100 AND audio_id!=0) 
      ) 
      AND audio_id IN (SELECT audio_id FROM storico WHERE clienti_id=100 AND filiali_id=500 ORDER BY storico_data ASC) 
      ORDER BY RAND() LIMIT 1 
      

      La query che ho riportato deve estrarre il nome di un file audio associato

      • al cliente_id 100,
      • alla filiale_id 500,
      • deve essere abilitato,
      • deve essere attivo per suonare sul canale numero 2
      • lo stesso file NON deve essere presente nella tabella STORICO se associato allo stesso cliente e filiale per non creare una ripetizione della stessa musica ma, (essendo questa query ripetuta in un ciclo) qualora sia impossibile rispettare questa condizione, la query dovrà comunque restituirlo onde evitare un risultato nullo con la conseguenza di un mancato ascolto.

      Questa query funziona ma risulta lenta.
      Esiste un modo alternativo che esaudisca comunque ciò che voglio fare?
      Grazie a tutti in anticipo

      postato in Coding
      M
      marikafreg