Page 158 - Corso di PHP - Livello base
P. 158
considerazione (nel nostro caso Autori) e scartato il campo con
lo stesso nome nelle tabelle precedenti. Per ovviare a questo
problema possiamo rinominare, all'interno della query, il
campo che crea il conflitto. Lo facciamo tramite la clausola
AS, che deve essere seguita dal nuovo nome del campo che ci
interessa:
$query = "SELECT Post.Titolo, Post.Id, Autori.Id AS NumeroAutore, Autori.Nickname
FROM Post JOIN Autori ON Post.IdAutore = Autori.Id";
$risultato = mysql_query($query);
Abbiamo quindi rinominato il nome del campo Id della tabella
Autori in NumeroAutore (ovviamente solo
momentaneamente, per la query: non abbiamo alterato in
alcun modo la struttura della tabella all'interno del nostro
database). Stampiamo poi in questo modo:
while ($record = mysql_fetch_array($risultato, MYSQL_ASSOC))
{
echo "Post numero {$record['Id']}: {$record['Titolo']}, scritto da {$record['Nickname']}
(autore numero {$record['NumeroAutore']})<br />";
}
Si possono poi rinominare anche le tabelle, magari per
questioni di praticità e rapidità, e il sistema è lo stesso che
abbiamo appena visto:
$query = "SELECT * FROM Post AS p JOIN Autori AS a ON p.IdAutore = a.Id";
$risultato = mysql_query($query);
Le unioni che abbiamo visto fino a questo momento sono unioni
di tipo INNER JOIN: significa che vengono combinati tutti i
record che hanno una corrispondenza e vengono invece
scartati i record che non hanno corrispondenza. Avremmo
potuto specificare meglio le query viste finora (prendiamo per
158