|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
[Transact-SQL Sql Server]Suggerimenti per una select
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
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Tu come la faresti? Come mai hai bisogno di un consiglio? E' estremamente semplice.
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
Perchè non mi viene nulla in mente per scrivere meno righe possibili di codice!
Sono alle prime armi...... consigli??
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
E' sbagliato l'approccio. Prima si risolve il problema, poi se necessario si ottimizza.
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
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
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
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"): Codice:
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 Codice:
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 |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
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.
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Due comuni diversi presi dalla stessa tabella -> due tabelle uguali con alias diversi
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
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
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:56.



















