sql >> Database >  >> RDS >> Sqlserver

Vraagfout met dubbelzinnige kolomnaam in SQL

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



  1. Overschakelen van Django-project van sqlite3-backend naar postgresql mislukt bij het laden van datadump

  2. room error:de kolommen die door de query worden geretourneerd, hebben niet de velden fieldname

  3. OraOLEDB.Oracle-provider is niet geregistreerd op de lokale computer

  4. Benieuwd naar de nieuwste Microsoft Access-functies?