Errore nome ambiguo causa ripetizione di variabili

di il
6 risposte

Errore nome ambiguo causa ripetizione di variabili

Salve a tutti, noto un errore per campi duplici quando uso file temporanei

ESEMPIO:

WITH A as
( select *
FROM (file1 as a
JOIN file 2 as b on a.capo1 = a.campo2)
Where ...
)
, B as
(SELECT *
FROM (file1 as b
JOIN file2 as c on b.campo1 = c.campo1)
WHERE ...
)
SELECT d.campo1, e.campo2
FROM (file1 as d
JOIN file 2 as e on e.capo1 = d.campo2)
Where ...

ERRORE: nome d.campo1 e e.campo1 sono ambigui
SPERO DI essermi spiegato bene, grazie in anticipo a colui che mi risolve il problema

6 Risposte

  • Re: Errore nome ambiguo causa ripetizione di variabili

    Ciao

    Il problema è che nella select (ultima) se non espliciti il nome del campo, lui prende in automatico quello del campo di partenza (non la tabella).

    Pertanto due campi col nome "campo1" creano problemi, anche se presi da tabelle diverse.

    Se cambi l'ultima select in
    
    
    SELECT d.campo1 as 'PrimoCampo', 
                e.campo1 as 'SecondoCampo'
    
    Dovrebbe funzionare
  • Re: Errore nome ambiguo causa ripetizione di variabili

    Sembrerebbe essere la strada giusta!
    Ad ogni modo continuo ad avere lo stesso errore, può essere che arrivi dai JOINS oppure nella sezione WHERE
    dove continuo ad usare e.campo1 ed f.campo2 ?
  • Re: Errore nome ambiguo causa ripetizione di variabili

    A me sembra 'strano' lo spezzone di query che hai postato all'inizio.

    Riportala completa e che riproduce l'errore
  • Re: Errore nome ambiguo causa ripetizione di variabili

    Certo che può essere.

    Devi passare lo script per controllare tutti i casi in cui metti in join tabelle con colonne con nome identico e decidi di estrarle.
    Fare il "trova" non sempre funziona, perché se usi gli asterischi, il nome della colonna nello script non lo trovi.


    Di norma ho abolito da anni l'uso dell'asterisco nelle query (essendo sviluppatore, mi conviene sempre elencare il nome delle colonne in modo da sapere l'ordine in cui vengono estratte). Col tempo ho notato che spesso si crede di far prima mettendo l'asterisco. Quando si scrive la query la prima volta è vero, però poi c'è il problema di manutenerla e qui nascono i problemi. Solo per elencare i più frequenti:
    • Viene aggiunta una colonna nel database con dei dati particolari che non tutti devono vedere (es: prezzi). Devi controllare tutte le query senza poter fare il "cerca" sul campo
    • Col tempo vengono aggiunte colonne e la query che inizialmente estraeva 10 colonne per 1.000.000 di dati, improvvisamente si trova ad estrarre 30 colonne per 1.000.000 di dati. In pratica estrae 20.000.000 di dati a cui nessuno è interessato
    • Aggiungi una colonna all'estrazione ed entri nel problema di omonimia dei nomi (simile al tuo)
    • Se le select con l'asterisco le metti in Join, la mole di dati estratti aumenta a dismisura
    • Se ti servono solo poche colonne ed estrai solo quelle, magari un domani mettendovi un indice sopra si ottengono dei miglioramenti (puoi memorizzare certe colonne negli indici, se estrai * non li sfrutterai mai)
  • Re: Errore nome ambiguo causa ripetizione di variabili

    Giovanni__98 ha scritto:


    Sembrerebbe essere la strada giusta!
    Ad ogni modo continuo ad avere lo stesso errore, può essere che arrivi dai JOINS oppure nella sezione WHERE
    dove continuo ad usare e.campo1 ed f.campo2 ?
    Dal momento che hai usato gli alias A e B, non capisco perché usare
    
    SELECT d.campo1, e.campo2
    
  • Re: Errore nome ambiguo causa ripetizione di variabili

    LeoFar ha scritto:


    ...
    Dal momento che hai usato gli alias A e B, non capisco perché usare
    
    SELECT d.campo1, e.campo2
    
    infatti ... è questo il motivo per cui ho chiesto di mostrare la query completa
Devi accedere o registrarti per scrivere nel forum
6 risposte