Page 1284 - Informatica dalla A a Z
P. 1284

in 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 NumeroAu-
              tore, Autori.Nickname FROM Post
              JOIN Autori ON Post.IdAutore = Autori.Id”;
              $risultato = mysql_query($query);


           Ora potremo stampare 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 />”;
              }

           è possibile rinominare anche le tabelle:


              $query = “SELECT * FROM Post AS p JOIN Autori AS a ON p.IdAutore
              = a.Id”;
              $risultato = mysql_query($query);

           Questo tipo di unione è detta INNER JOIN. Esistono anche altri tipi di unioni, le OUTER JOIN,

           che a loro volta si dividono in LEFT JOIN, ovvero unioni che contengono sempre tutti i re-
           cord della prima tabella (la tabella di sinistra, left) mentre per quanto riguarda i record
           della seconda tabella (quella di destra, right) vengono estratti solo i record che trovano
           una corrispondenza con quelli della tabella di sinistra, e in RIGHT JOIN, che funzionano

           all’inverso rispetto alle unioni LEFT JOIN.

           Esempio:

              $query = “SELECT * FROM Autori LEFT JOIN Post ON Autori.Id =

              Post.IdAutore”;
              $risultato = mysql_query($query);

           In questo caso vengono selezionati tutti i record della tabella Autori uniti ai soli record della
           tabella Post che trovano una corrispondenza.

           Il RIGHT JOIN funziona allo stesso modo del LEFT JOIN ma in maniera inversa:


              $query = “SELECT * FROM Post RIGHT JOIN Autori ON Autori.Id =
              Post.IdAutore”;
              $risultato = mysql_query($query);

                                                           1280
   1279   1280   1281   1282   1283   1284   1285   1286   1287   1288   1289