Mamy do czynienia z tym błędem, gdy wybieramy dane z więcej niż jednej tabeli łącząc tabele i co najmniej jedną z wybranych kolumn (zdarzy się to również, gdy użyjesz * do wybrania wszystkich kolumn) istnieje pod tą samą nazwą w więcej niż jednej tabeli (nasze wybrane/połączone stoły). W takim przypadku musimy określić, z której tabeli wybieramy kolumnę.
Poniższy przykład to przykładowa implementacja rozwiązania opisanego powyżej
Myślę, że masz niejednoznaczność tylko w InvoiceID
który istnieje zarówno w InvoiceLineItems
i Invoices
Inne dziedziny wydają się odrębne. Więc spróbuj tego
Po prostu zamieniam InvoiceID na 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
Możesz użyć nazwy_tabeli.kolumnae dla wszystkich kolumn (w zaznaczeniu,gdzie,grupuj według i porządkuj według) bez używania aliasów. Możesz jednak użyć aliasu zgodnie z innymi odpowiedziami