Ho la seguente istruzione select, per prendere il prossimo elemento pianificato per uno stream. Se non c'è una riga corrispondente, voglio che restituisca un valore predefinito. Ecco la linea che sto usando:Restituisce un valore predefinito se non è stata trovata alcuna riga
SELECT `file` FROM `show`, `schedule`
WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP()
AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file`
ORDER BY `start_time` DESC LIMIT 1
Questo dovrebbe afferrare l'elemento più recente in programma, ma non se si tratta di più di 30 minuti prima che la query. Tuttavia, se l'utente non pianifica nulla, desidero un valore predefinito, in modo che qualcosa venga effettivamente riprodotto nello stream. Ho provato la seguente:
SELECT COALESCE(`file`, 'default.webm') FROM `show`, `schedule`...
E:
SELECT IFNULL(`file`, 'default.webm') FROM `show`, `schedule`
Tuttavia, restituisce sempre un risultato vuoto se non si trovano le righe. Come posso invece restituire un valore predefinito?
Brilliant Stuff! Ma come può essere applicato questo concetto a una query che restituisce più righe anziché una come nel nostro caso? – Vectoria
Questa non è davvero una buona soluzione come spiega in seguito Tomas (eccetto probabilmente se si esegue una query su un valore di chiave primaria). – Pierre