Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [SQL alias] Gli alias in SQL

    Cito:
    "Nella clausola where possono comparire più istanze della stessa tabella mediante gli alias".

    Esempio:
    SELECT Nome
    FROM GENITORI, GENITORI
    WHERE (GENITORI.NOME=GENITORI.NOMEGEN)

    La riga in rosso è un errore.
    La mia domanda è: perché nella FROM il nome della stessa tabella andrebbe due volte?

    La versione corretta della query di cui sopra sarebbe:
    SELECT G2.NOMEGN, G2.COGNOMEGEN
    FROM GENITORI AS G1, GENITORI AS G2
    WHERE (G1.NOMEGEN=G2.NOME) AND (G1.COGNOMEGEN=G2.COGNOME) AND (G1.NOME="MATTEO") AND (G1.COGNOME="BIANCHI")

    Cioè questa query mi estrae il nome dei genitori di Matteo Bianchi in una tabella in cui ci sono due Matteo Bianchi (ma con genitori diversi).

    In generale, a parte un caso come questo, gli alias a cosa servono? Cioè a cosa mi serve ad esempio fare:
    SELECT NONNI AS N1 (esempio a caso)
    se la tabella (attributo se risultato singolo) dei risultati è una tabella temporanea, perché dovrei darle un nome?
    Non capisco molto bene questa cosa...
    Grazie!

  2. #2
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Cito:
    "Nella clausola where possono comparire più istanze della stessa tabella mediante gli alias".

    Esempio:
    SELECT Nome
    FROM GENITORI, GENITORI
    WHERE (GENITORI.NOME=GENITORI.NOMEGEN)

    La riga in rosso è un errore.
    La mia domanda è: perché nella FROM il nome della stessa tabella andrebbe due volte?

    La versione corretta della query di cui sopra sarebbe:
    SELECT G2.NOMEGN, G2.COGNOMEGEN
    FROM GENITORI AS G1, GENITORI AS G2
    WHERE (G1.NOMEGEN=G2.NOME) AND (G1.COGNOMEGEN=G2.COGNOME) AND (G1.NOME="MATTEO") AND (G1.COGNOME="BIANCHI")

    Cioè questa query mi estrae il nome dei genitori di Matteo Bianchi in una tabella in cui ci sono due Matteo Bianchi (ma con genitori diversi).

    In generale, a parte un caso come questo, gli alias a cosa servono? Cioè a cosa mi serve ad esempio fare:
    SELECT NONNI AS N1 (esempio a caso)
    se la tabella (attributo se risultato singolo) dei risultati è una tabella temporanea, perché dovrei darle un nome?
    Non capisco molto bene questa cosa...
    Grazie!
    Un altro uso e' abbreviare la scrittura di query.

    Se ad esempio hai una tabella di nome : apparecchiatureElettroniche

    nella query dovresti scrivere:
    codice:
    SELECT apparecchiatureElettroniche.campo1, apparecchiatureElettroniche.campo2,apparecchiatureElettroniche.campo3
    FROM apparecchiatureElettroniche
    WHERE apparecchiatureElettroniche.campo4=aaa and apparecchiatureElettroniche.campo5=bbb
    usando alias potresti abbreviare di molto e scrivere:
    codice:
    SELECT aE.campo1, aE.campo2,aE.campo3
    FROM apparecchiatureElettroniche as aE
    WHERE aE.campo4=aaa and aE.campo5=bbb
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    in realtà l'uso effettivo è comodo quando vi sono costruzioni complesse,
    ne riporto una, solo a titolo di esempio
    codice:
    SELECT RTRIM(c.FirstName) + ' ' + LTRIM(c.LastName) AS Name,
     d.City
    FROM Person.Contact c
    INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 
    INNER JOIN
       (SELECT ea.AddressID, ea.EmployeeID, a.City 
        FROM Person.Address a
        INNER JOIN HumanResources.EmployeeAddress ea
        ON a.AddressID = ea.AddressID) AS d
    ON e.EmployeeID = d.EmployeeID
    ORDER BY c.LastName, c.FirstName;
    questa funziona molto più semplicemente
    codice:
    SELECT campo1, campo2, campo3
    FROM apparecchiatureElettroniche
    WHERE campo4=aaa and campo5=bbb
    Ultima modifica di marino51; 05-02-2015 a 17:27

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.