View Full Version : [Transact-SQL Sql Server]Suggerimenti per una select
carlito9987
28-07-2011, 15:59
Ciao a tutti!! Avrei bisogno di un piccolo consiglio...
Ho 2 tabelle con la seguente struttura:
PERSONE
nome
cognome
id_comune_residenza
id_comune_nascita
TABELLA_COMUNI
id_comune
descrizione
Voi come comporreste la query per ottenere il seguente risultato???
NOME COGNOME LUOGO_NASCITA LUOGO_RESIDENZA
Paolo Rossi Roma Bologna
Vi ringrazio anticipatamente!! Ciaoooo
wingman87
28-07-2011, 16:11
Tu come la faresti? Come mai hai bisogno di un consiglio? E' estremamente semplice.
carlito9987
28-07-2011, 16:27
Perchè non mi viene nulla in mente per scrivere meno righe possibili di codice!
Sono alle prime armi...... consigli??
wingman87
28-07-2011, 16:41
E' sbagliato l'approccio. Prima si risolve il problema, poi se necessario si ottimizza.
carlito9987
28-07-2011, 16:51
Si, infatti quello che mi preme è risolvere il problema.
Ora come ora, nella proceduta transact-sql mi trovo due query separate che mi valorizzano questi due campi, la richiesta che mi è stata fatta, dato che vanno a prendere il comune dalla stessa tabella, è di semplificare il tutto in un'unico blocco... solo che non mi viene nulla in testa...
Select TABELLA_COMUNI.DESCRIZIONE from PERSONE, TABELLA_COMUNI
where PERSONE.ID_COMUNE_NASCITA = TABELLA_COMUNI.ID_COMUNE
Select TABELLA_COMUNI.DESCRIZIONE from PERSONE, TABELLA_COMUNI
where PERSONE.ID_COMUNE_RESIDENZA= TABELLA_COMUNI.ID_COMUNE
wingman87
28-07-2011, 21:30
Conosci il comando di alias "as"?
Con esso puoi mettere due volte la stessa tabella nella clausola from specificando due alias diversi.
Ad esempio dalla tua tabella PERSONE si possono ricavare tutte le possibili coppie di persone (è solo un esempio per farti vedere come si usa "as"):
select p1.nome, p1.cognome, p2.nome, p2.cognome
from PERSONE as p1, PERSONE as p2
where p1.nome != p2.nome
and p1.cognome != p2.cognome
Per la cronaca: puoi usare as anche per dare un nome alle colonne del risultato della query:
select p1.nome as 'Nome 1',
p1.cognome as 'Cognome 1',
p2.nome as 'Nome 2',
p2.cognome as 'Cognome 2'
from PERSONE as p1, PERSONE as p2
where p1.nome != p2.nome
and p1.cognome != p2.cognome
carlito9987
29-07-2011, 07:59
Innanzitutto grazie per la risposta!
Ma così facendo come potrei risolvere il mio problema? Io per ogni persona, quindi con un unico id_persona, dovrei recuperare due comuni diversi... non capisco come comporre il join in maniera corretta.
wingman87
29-07-2011, 08:21
Due comuni diversi presi dalla stessa tabella -> due tabelle uguali con alias diversi
carlito9987
29-07-2011, 10:14
Grazie per le risposte ma ho risolto diversamente.... in pratica ho notato che nel codice spesso mi serviva la descrizione di questo id (circa una ventina di volte), e dato che la cosa avveniva in diversi contesti, avrei comunque dovuto creare diverse query, quindi ho risolto creando una banale funzione che riceve in input l'id e mi restituisce la descrizione.
Ti ringrazio ancora. Ciao ciaoo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.