MySQL Forums
Forum List  »  Italian

Query estrazione dati senza ripetizione storica
Posted by: Marika Freguglia
Date: July 16, 2015 12:43PM

Salve 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 è molto lenta.
Sapete un modo alternativo che esaudisca comunque ciò che voglio fare?

Options: ReplyQuote


Subject
Views
Written By
Posted
Query estrazione dati senza ripetizione storica
1944
July 16, 2015 12:43PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.