Rinominare tabella sql dopo join di due precedenti

Invictus_24

Nuovo Utente
22
2
Buon pomeriggio a tutti! :luxhello:
c'è qualcuno che sa dirmi se in sql posso dare un nome ad una tabella ottenuta precedentemente dal join di altre due (sempre che si possa fare) ?
 
Ultima modifica da un moderatore:

Tidus88

From another world
Utente Èlite
2,038
1,738
CPU
Ryzen 5600X
Dissipatore
Deepcool GAMMAX 400
Scheda Madre
Asus Prime B450-Plus
HDD
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
GPU
RTX 3060Ti Dual ASUS
Audio
Edifier R1280db
Monitor
Hisense H55U7A
PSU
Sharkoon Silentstorm Icewind 550W
Case
Corsair 275R Airflow White
Net
SkyWifi FTTH
OS
Windows 10
Puoi dargli un alias o creare una view a cui darai tu il nome.

Se provi ad essere più specifico magari ti aiutiamo meglio ;)
 

Invictus_24

Nuovo Utente
22
2
certamente, mi spiego meglio;
premetto che le viste purtroppo non sono incluse nel mio programma di studio, perciò se riuscissi a capire come dargli un alias sarebbe decisamente meglio.
praticamente ho una tabella, venuta fuori da un join ,in cui devo estrarre il nome dei clienti che hanno acquistato solo una marca di auto dopo un certo anno (possono aver acquistato anche più auto dopo l'anno in questione);
la mia idea era di unire la tabella che ho(ottenuta precedentemente con un join) con una sua copia.. solo che non so come fare
avvisatemi se il forum su cui sto scrivendo non è adatto a questo tipo di argomenti:ok:
 

system_master89

Nuovo Utente
41
8
CPU
i5 sky-lake
Dissipatore
cooler master
Scheda Madre
asus sabertooth x58
HDD
samsung ssd evo
RAM
16 gb
GPU
rtx 2070
Audio
realtek
Monitor
dell
PSU
corsair
Case
ninja
Net
ftth
OS
CentOS 7
Facendo riferimento al codice sotto, crei un alias per la tabella2 che sarebbe tabella3. Quindi quando userai il nome tabella3 nella tua query, farai riferimento alla tabella2

SQL:
Select tabella1.campo1
from tabella1 inner join tabella2 tabella3 on tabella1.id=tabella3.id
where tabella3.campo = 'qualcosa'
 

Invictus_24

Nuovo Utente
22
2
ok.. però il mio problema è un altro, forse non mi sono ben spiegato;
la tabella in questione è stata già ottenuta precedentemente , nella query, tramite una inner join, adesso avrei bisogno di una sua copia, posso rinominarla con un alias in qualche modo?( se si come posso fare?)
 

Tidus88

From another world
Utente Èlite
2,038
1,738
CPU
Ryzen 5600X
Dissipatore
Deepcool GAMMAX 400
Scheda Madre
Asus Prime B450-Plus
HDD
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
GPU
RTX 3060Ti Dual ASUS
Audio
Edifier R1280db
Monitor
Hisense H55U7A
PSU
Sharkoon Silentstorm Icewind 550W
Case
Corsair 275R Airflow White
Net
SkyWifi FTTH
OS
Windows 10
Supponiamo che la query che fa la join sia:

Codice:
SELECT
    *
FROM
    tabella1 a
        INNER JOIN
    tabella2 b ON a.ID = b.ID

Ora tu potresti riutilizzarla così:

Codice:
SELECT
    *
FROM
    tabella3 c
        INNER JOIN
    (SELECT    *
    FROM
        tabella1 a
            INNER JOIN
    tabella2 b ON a.ID = b.ID) AS join ON c.ID = join.idEsterno

Come vedi sto utilizzando la tua Query con JOIN come fosse una tabella che si chiama join.

Se vuoi qualcosa di più sintetico devi necessariamente usare una vista.
 
  • Mi piace
Reazioni: Invictus_24

Invictus_24

Nuovo Utente
22
2
va bene @Tidus88 :sisi: ,fin qui ci sono; adesso la tabella che tu hai rinominato con l'alias join , potrei unirla direttamente con una sua copia anziché con la tabella3 ?
 

Tidus88

From another world
Utente Èlite
2,038
1,738
CPU
Ryzen 5600X
Dissipatore
Deepcool GAMMAX 400
Scheda Madre
Asus Prime B450-Plus
HDD
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
GPU
RTX 3060Ti Dual ASUS
Audio
Edifier R1280db
Monitor
Hisense H55U7A
PSU
Sharkoon Silentstorm Icewind 550W
Case
Corsair 275R Airflow White
Net
SkyWifi FTTH
OS
Windows 10
Se intendi questo:
Codice:
SELECT
    *
FROM
    (SELECT    *
    FROM
        tabella1 a
            INNER JOIN
    tabella2 b ON a.ID = b.ID) AS join
        INNER JOIN
    join ON join.id1 = join.id2

No, non si può fare.

Anzitutto il motore SQL ti direbbe che non esiste una tabella chiamata join nel database.
Inoltre non saprebbe a quale 'join' riferirsi nel risolvere l'alias della condizione di ON
 
  • Mi piace
Reazioni: Invictus_24

Invictus_24

Nuovo Utente
22
2
Se intendi questo:
Codice:
SELECT
    *
FROM
    (SELECT    *
    FROM
        tabella1 a
            INNER JOIN
    tabella2 b ON a.ID = b.ID) AS join
        INNER JOIN
    join ON join.id1 = join.id2

No, non si può fare.

Anzitutto il motore SQL ti direbbe che non esiste una tabella chiamata join nel database.
Inoltre non saprebbe a quale 'join' riferirsi nel risolvere l'alias della condizione di ON
giustissimo, ci ho pensato ancora un pò dopo avertelo chiesto e mi era venuto un dubbio del genere :patpat:
Post unito automaticamente:

grazie mille a tutti
 

Invictus_24

Nuovo Utente
22
2
Supponiamo che la query che fa la join sia:

Codice:
SELECT
    *
FROM
    tabella1 a
        INNER JOIN
    tabella2 b ON a.ID = b.ID

Ora tu potresti riutilizzarla così:

Codice:
SELECT
    *
FROM
   ( tabella3 c
        INNER JOIN
    (SELECT    *
    FROM
        tabella1 a
            INNER JOIN
    tabella2 b ON a.ID = b.ID) AS join ON c.ID = join.idEsterno)   as w )

Come vedi sto utilizzando la tua Query con JOIN come fosse una tabella che si chiama join.

Se vuoi qualcosa di più sintetico devi necessariamente usare una vista.
@Tidus88 un'ultima curiosità se mi permetti, dopo aver scritto questo pezzo di codice, potrei ancora rinominare tutto quello che ho ottenuto dai due join in questo modo?(guarda codice)
 
  • Mi piace
Reazioni: Tidus88

Tidus88

From another world
Utente Èlite
2,038
1,738
CPU
Ryzen 5600X
Dissipatore
Deepcool GAMMAX 400
Scheda Madre
Asus Prime B450-Plus
HDD
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
GPU
RTX 3060Ti Dual ASUS
Audio
Edifier R1280db
Monitor
Hisense H55U7A
PSU
Sharkoon Silentstorm Icewind 550W
Case
Corsair 275R Airflow White
Net
SkyWifi FTTH
OS
Windows 10
Sì, in linea di massima è possibile, fai attenzione ai possibili casi di ambiguità tra i nomi dei campi.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili