Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore di query con nome di colonna ambiguo in SQL

Riscontriamo questo errore quando selezioniamo i dati da più di una tabella unendo tabelle e almeno una delle colonne selezionate (succederà anche quando usi * per selezionare tutte le colonne) esiste con lo stesso nome in più tabelle (i nostri tavoli selezionati/uniti). In tal caso dobbiamo specificare da quale tabella stiamo selezionando la colonna.

Quello che segue è un esempio di implementazione della soluzione del concetto spiegato sopra

Penso che tu abbia ambiguità solo in InvoiceID che esiste sia in InvoiceLineItems e Invoices Altri campi sembrano distinti. Quindi prova questo

Sostituisco semplicemente InvoiceID con Fatture.InvoiceID

   SELECT 
        VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount
    FROM Vendors 
    JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID)
    JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID)
    WHERE  
        Invoices.InvoiceID IN
            (SELECT InvoiceSequence 
             FROM InvoiceLineItems
             WHERE InvoiceSequence > 1)
    ORDER BY 
        VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount

Puoi utilizzare nometabella.colonnae per tutte le colonne (in selezione,dove,raggruppa per e ordina per) senza utilizzare alcun alias. Tuttavia puoi usare un alias come guidato da altre risposte