Rinominare tabella sql dopo join di due precedenti

Invictus_24

Nuovo Utente
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

Utente Attivo
706
218
Hardware Utente
CPU
Ryzen 2400G
Scheda Madre
Asrock B450M Pro4
Hard Disk
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
Scheda Video
GTX 970 Compact Inno3D
Monitor
Philips 27" 278C4QHSN/00
Alimentatore
Sharkoon Silentstorm Icewind 550W
Case
Aerocool Aero-500-BC
Sistema Operativo
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
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
7
Hardware Utente
CPU
i5 sky-lake
Dissipatore
cooler master
Scheda Madre
asus sabertooth x58
Hard Disk
samsung ssd evo
RAM
16 gb
Scheda Video
rtx 2070
Scheda Audio
realtek
Monitor
dell
Alimentatore
corsair
Case
ninja
Internet
ftth
Sistema Operativo
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
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

Utente Attivo
706
218
Hardware Utente
CPU
Ryzen 2400G
Scheda Madre
Asrock B450M Pro4
Hard Disk
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
Scheda Video
GTX 970 Compact Inno3D
Monitor
Philips 27" 278C4QHSN/00
Alimentatore
Sharkoon Silentstorm Icewind 550W
Case
Aerocool Aero-500-BC
Sistema Operativo
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
Reactions: Invictus_24

Tidus88

Utente Attivo
706
218
Hardware Utente
CPU
Ryzen 2400G
Scheda Madre
Asrock B450M Pro4
Hard Disk
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
Scheda Video
GTX 970 Compact Inno3D
Monitor
Philips 27" 278C4QHSN/00
Alimentatore
Sharkoon Silentstorm Icewind 550W
Case
Aerocool Aero-500-BC
Sistema Operativo
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
Reactions: Invictus_24

Invictus_24

Nuovo Utente
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 automaticamente unito:

grazie mille a tutti
 

Invictus_24

Nuovo Utente
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
Reactions: Tidus88

Tidus88

Utente Attivo
706
218
Hardware Utente
CPU
Ryzen 2400G
Scheda Madre
Asrock B450M Pro4
Hard Disk
MX-500 500GB
RAM
Ballistix 16GB DDR4 3000Mhz
Scheda Video
GTX 970 Compact Inno3D
Monitor
Philips 27" 278C4QHSN/00
Alimentatore
Sharkoon Silentstorm Icewind 550W
Case
Aerocool Aero-500-BC
Sistema Operativo
Windows 10
Sì, in linea di massima è possibile, fai attenzione ai possibili casi di ambiguità tra i nomi dei campi.
 

Entra

oppure Accedi utilizzando