sql query bij specifieke datum
mogelijkheid 1 = normale muziek (van 1-9 t/m 5-12 en van 27-12 t/m 30-4)
mogelijkheid 2 = Kerst muziek (Van 6-12 t/m 26-12)
mogelijkheid 3 = Zomer muziek (Van 1-5 t/m 31-8)
Ik heb voor alle 3 de mogelijkheden aparte scripts geschreven nu. ik zal 1 voorbeeld onderaan plaatsen...
mijn uitdaging is nu dus om 1 script te schrijven waarin ik alle 3 de opties heb verwerkt en dat deze opties op de juiste datum wordt gerund. (je wilt in de zomer toch geen kerstmuziek horen ;) )
Hopelijk kan iemand me helpen met deze uitdaging!
Het standaard script voor mogelijkheid 1 normale muziek (Deze werkt en hoeft dus niet aangepast te worden):
SELECT * FROM (
(SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`, `songs`.`weight`, 1 AS `preference` FROM `songs`
LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
WHERE `songs`.`enabled` = 1
AND `songs`.`song_type` = 0
AND `songs`.`id_subcat` = 68
AND `songs`.`id_genre` = 99
AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
AND `queuelist`.`artist` IS NULL
AND `weight`=75
ORDER BY RAND ()
LIMIT 20)
ORDER BY `date_played` asc
LIMIT 20
)
temp
ORDER BY `date_played` asc
LIMIT 1;
Code (php)
Gewijzigd op 06/01/2017 13:52:08 door - SanThe -
Er is denk ik nog 1 probleem. Nu wordt er verwezen naar een los script als ik het goed begrijp. Dat is helaas niet mogelijk in de software. Alles moet in 1 script komen. Kan ik het stukje script welke ik eerder stuurde gewoon in plaats van $sgl='//zomer' plaatsen? Of is dat te kort door de bocht?
Sorry, mijn kennis van php en sql is nog niet zo groot en wil nog veel leren.
Hopelijk kan iemand me verder helpen!
Onder de switch() ga je de query uitvoeren en de resultaten verwerken.
om het script te testen maak ik even gebruik van 3 scripts zodat het even wat overzichtelijker is!
SELECT CURDATE() as zomer
SELECT CURDATE() as Kerst
SELECT CURDATE() as Normaal
deze 3 losse scripts worden gewoon geaccepteerd in de software en geven de resultaten goed weer.
nu heb ik deze in bovenstaand script van SanThe verwerkt, maar krijg ik elke keer de melding dat er geen resultaten zijn.
Het script ziet er alsvolgt uit, hopelijk kan iemand me vertellen wat er mis zou kunnen zijn: