Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317

    Come funziona AS in Sql ?

    stavo leggendo una guida di SQL però non è mi è chiara la funzione AS ( alias )

    es:

    Codice PHP:
    $query mysql_query('SELECT nome AS aliasNome FROM cittadini');
    while ( 
    $stampa $query ){
    print 
    $stampa['aliasNome'];

    e fin qua ci siamo...

    ma:

    Codice PHP:
    SELECT FROM cittadini AS nuovovalore 
    In che modo può essere applicato?


    e ancora:
    Codice PHP:
    SELECT u.*, g.*, o.connessi FROM cittadini AS 
    u,g e o NON sono i nomi delle tabelle, cosa sono?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    110

    Re: Come funziona AS in Sql ?

    Codice PHP:
    SELECT FROM cittadini AS nuovovalore 
    In che modo può essere applicato?
    Significa che tutto ciò che si riferisce alla tabella cittadini dovrà invece fare riferimento alla tabella fittizia nuovovalore.


    e ancora:
    Codice PHP:
    SELECT u.*, g.*, o.connessi FROM cittadini AS 
    u,g e o NON sono i nomi delle tabelle, cosa sono?

    grazie
    Sono gli alias definiti mediante AS. La tabella cittadini, per esempio, presente un "AS u" pertanto nella query è giusto specificare u.* e non cittadini.* (cosa che tral'altro ti restituirebbe un errore).

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    sarebbe troppo chiederti un esempio pratico pls? che non ho mica ben capito...

  4. #4
    SELECT u.*, g.*, o.connessi FROM cittadini AS u

    significa che ci sono altre due tabelle alias "g" e "o" che tu non consideri nel tuo esempio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    scusa ma in genere quando si precede i nomi delle colonne con il punto ( . ) non è per specificare la tabella di provenienza, per non rischiare che ce ne siano due che si chiamano in egual modo? :master:

  6. #6
    Originariamente inviato da zacca94
    scusa ma in genere quando si precede i nomi delle colonne con il punto ( . ) non è per specificare la tabella di provenienza, per non rischiare che ce ne siano due che si chiamano in egual modo? :master:
    molto impreciso. Si specifica la tabella di provenienza, ma se di colonne nelle varie tabelle ce ne sono con nome uguale l'ultima selezionata sovrascrivera' tutte le precedenti. Puoi avere tante tabelle.campi nella selezione ma nel result set ci sara' l'equivalente di una sola tabella che comprendera' tutti i campi selezionati. Ecco perche serve l'alias: deve impedire che nomi di campo uguali tra le varie tabelle non debbano sovrascriversi e serve pure per identificare correttamente in modo univoco "quale" di questi campi con nome identico vuoi estrarre dal result set

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    110
    Originariamente inviato da piero.mac
    molto impreciso. Si specifica la tabella di provenienza, ma se di colonne nelle varie tabelle ce ne sono con nome uguale l'ultima selezionata sovrascrivera' tutte le precedenti. Puoi avere tante tabelle.campi nella selezione ma nel result set ci sara' l'equivalente di una sola tabella che comprendera' tutti i campi selezionati. Ecco perche serve l'alias: deve impedire che nomi di campo uguali tra le varie tabelle non debbano sovrascriversi e serve pure per identificare correttamente in modo univoco "quale" di questi campi con nome identico vuoi estrarre dal result set
    Motivo per il quale si può utilizzare un alias pure sulle singole colonne:

    Codice PHP:
    SELECT u.esempio AS esu.ciao AS co FROM utenti AS u WHERE ........ 

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Scusate se ho ancora dei dubbi.

    Codice PHP:
    SELECT FROM cittadini AS nuovovalore 
    In che modo può essere applicato?
    Significa che tutto ciò che si riferisce alla tabella cittadini dovrà invece fare riferimento alla tabella fittizia nuovovalore.
    Si ma non capisco in che modo si fa questo riferimento...?? cioè magari in una query più complicata in cui si usano gli join invece di riscrivere nometabella.valore si scrive nuovovalore.nomecolonna? ( se si allora diventa tutto più chiaro )


    SELECT u.*, g.*, o.connessi FROM cittadini AS u

    significa che ci sono altre due tabelle alias "g" e "o" che tu non consideri nel tuo esempio.
    si vede che son ben riposato xD, intendi dire che le tabelle g.* e o.connessi sono successivamente specificate ( magari in un join ) e "aliasate" anche loro?

  9. #9
    Alias non e' che si DEVE utilizzare. Si PUO' utilizzare quando serve. E quando serve? qui non e' che c'e' una regola fissa ... lo usi quando ti pare, oppure quando e' indispensabile differenziare nomi identici oppure a crearne dei nuovi semplificando l'esistente.

    per esempio:

    select 120 + 20

    troverai il risultato in un campo chiamato "120 + 20", se invece assegni un alias, per esempio:

    select 120 + 20 as tot

    troverai il risultato in un campo chiamato "tot" e sara' piu' semplice anche associarlo ad un group by oppure ad un order by. L'uso nel nome di tabella e' invece solitamente utilizzato per semplificare i nomi oppure per scorrere due o piu' volte la stessa tabella con opzioni differenti.

    Da notare che l'alias viene risolto nella query nello stesso ordine in cui vengono risolte le varie istruzioni e cioe':

    nome tabella / tabelle
    la condizione where
    il nome dei campi

    quindi non potrai usare un alias di campo nel where perche' nel momento della definizione della condizione non esiste ancora, mentre potrai utilizzare l'alias della tabella perche' risolto prima del where.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.