Page 165 - Corso di PHP - Livello base
P. 165
$risultato6 = mysql_query($query6);
Fino al WHERE quindi niente di strano: dopo l'uguale però
inseriamo un nuovo comando SELECT, che dovrà estrarre il
numero massimo di commenti presenti in un post. La query
“più grande” estrarrà quindi il titolo il cui numero di commenti
sarà uguale al massimo numero di commenti per un post
presenti nel nostro database. Stampiamo poi molto
semplicemente così:
while ($record6 = mysql_fetch_array($risultato6, MYSQL_ASSOC))
{
echo "Post con il maggior numero di commenti: "; echo $record6['Titolo'];
}
Ripetiamo la stessa cosa anche per conoscere il post con il
minor numero di commenti. Possiamo poi creare dei comandi
SELECT che estraggono informazioni dai risultati di altri
comandi SELECT, come in questo caso:
$query = "SELECT * FROM (SELECT * FROM Post WHERE Id > 5) AS PrimaSelect
WHERE NumCommenti > 6";
$risultato = mysql_query($query);
Che è una complicazione inutile in quanto avremmo ottenuto lo
stesso risultato con un solo comando SELECT, ma è utile per
capire il meccanismo delle query annidate. In questo caso
selezioniamo tutti i risultati tratti a loro volta dai risultati di una
prima selezione, che dovrà obbligatoriamente essere nominata
(AS PrimaSelect), altrimenti la query non funzionerà e ci sarà
un errore. La prima selezione, quella interna, estrae tutti i record
dalla tabella Post che hanno un id maggiore di 5, e da questa
selezione, il comando SELECT principale estrae i post che
hanno più di sei commenti.
A conclusione del capitolo, come sempre, un esercizio: create
165