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
   153   154   155   156   157   158   159   160   161   162   163