Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro de consulta com nome de coluna ambíguo no SQL


Enfrentamos esse erro ao selecionar dados de mais de uma tabela juntando tabelas e pelo menos uma das colunas selecionadas (isso também acontecerá quando usar * para selecionar todas as colunas) existir com o mesmo nome em mais de uma tabela (nossas tabelas selecionadas/juntadas). Nesse caso, devemos especificar de qual tabela estamos selecionando a coluna.

A seguir está um exemplo de implementação de solução do conceito explicado acima

Acho que você tem ambiguidade apenas em InvoiceID que existe tanto em InvoiceLineItems e Invoices Outros campos parecem distintos. Então tente isso

Acabei de substituir InvoiceID por Invoices.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

Você pode usar tablename.columnnae para todas as colunas (na seleção, onde, agrupar por e ordenar por) sem usar nenhum alias. No entanto, você pode usar um alias conforme guiado por outras respostas