SQL con condizioni
Non so esattamente come intitolare questo post, ma spero di essere chiaro nel formulare la domanda.
Ho la seguente query:
SELECT UNIX_TIMESTAMP(news.date), news.counter, news.id_user, news.id_news, news.pid, news.title, news.update, programs.name FROM news, programs WHERE (news.waiting = '' AND programs.id_program = news.pid) ORDER BY news.date DESC
che mi restituisce un certo numero di risultati.
Il problema nasce dal fatto che il campo news.pid non sempre ha un suo corrispondente nel campo programs.id_program.
Alcune news infatti sono correlate ad un dato programma, altre no. Per cui la query sopra mi restituisce solo le news che sono effettivamente correlate a qualche programma.
Io vorrei invece che mi restituisse tutte le news, a prescindere dalla loro correlazione con un programma.
Quindi la query dovrebbe essere questa
SELECT UNIX_TIMESTAMP(news.date), news.counter, news.id_user, news.id_news, news.pid, news.title, news.update, programs.name FROM news, programs WHERE (news.waiting = '') ORDER BY news.date DESC
in un caso (nessuna correlazione con programmi) e questa nell'altro:
SELECT UNIX_TIMESTAMP(news.date), news.counter, news.id_user, news.id_news, news.pid, news.title, news.update, programs.name FROM news, programs WHERE (news.waiting = '' AND programs.id_program = news.pid) ORDER BY news.date DESC
E' possibile ottenere un risultato simile in runtime?
qualcosa del tipo:
SELECT UNIX_TIMESTAMP(news.date), news.counter, news.id_user, news.id_news, news.pid, news.title, news.update, programs.name FROM news, programs WHERE (news.waiting = ''
IF news.pid!=0
AND programs.id_program = news.pid
END IF
) ORDER BY news.date DESC
Lo so che la sintassi che ho postato non ha senso alcuno, però spero renda il senso: in sostanza a runtime il server aggiunge alle condizioni della query la stringa "AND programs.id_program = news.pid" se e solo se il campo news.pid è diverso da 0.
Spero di essere stato sufficientemente chiaro nell'esporre il mio problema.
Grazie