Deze fout treedt op wanneer we gegevens selecteren uit meer dan één tabellen door tabellen en ten minste één van de geselecteerde kolommen samen te voegen (het gebeurt ook als * gebruikt wordt om alle kolommen te selecteren) bestaan met dezelfde naam in meer dan één tabel (onze geselecteerde/samengevoegde tabellen). In dat geval moeten we specificeren uit welke tabel we een kolom selecteren.
Hier volgt een voorbeeld van een oplossingsimplementatie van het concept dat hierboven is uitgelegd
Ik denk dat je alleen dubbelzinnigheid hebt in InvoiceID
die zowel in InvoiceLineItems
. bestaat en Invoices
Andere velden lijken verschillend. Dus probeer dit
Ik vervang gewoon InvoiceID door 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
Je kunt tablename.columnnae gebruiken voor alle kolommen (in selection,where,group by en order by) zonder een alias te gebruiken. U kunt echter een alias gebruiken zoals aangegeven door andere antwoorden