Saltar al contenido

Error de consulta con nombre de columna ambiguo en SQL

Esta es la solución más correcta que encomtrarás dar, sin embargo estúdiala pausadamente y analiza si es compatible a tu proyecto.

Solución:

Enfrentamos este error cuando estamos seleccionando datos de más de una tabla uniendo tablas y al menos una de las columnas seleccionadas (también sucederá cuando use * para seleccionar todas las columnas) existe con el mismo nombre en más de una tabla (nuestra seleccionada). /mesas unidas). En ese caso, debemos especificar de qué tabla estamos seleccionando la columna.

A continuación se muestra una implementación de solución de ejemplo del concepto explicado anteriormente

Creo que tienes ambigüedad solo en InvoiceID que existe tanto en InvoiceLineItems y Invoices Otros campos parecen distintos. Así que prueba esto

Acabo de reemplazar InvoiceID con 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

Puede usar tablename.columnnae para todas las columnas (en selección, dónde, agrupar por y ordenar por) sin usar ningún alias. Sin embargo, puede usar un alias guiado por otras respuestas

tienes una columna InvoiceID en el Invoices mesa y también en la InvoiceLineItems mesa. No hay forma de que el motor de ejecución de consultas sepa cuál desea que se devuelva.

Agregar un alias de tabla ayudará:

SELECT V.VendorName, I.InvoiceID, IL.InvoiceSequence, IL.InvoiceLineItemAmount
FROM Vendors V
JOIN Invoices I ON (...)
JOIN InvoiceLineItems IL ON (...)
WHERE ...
ORDER BY V.VendorName, I.InvoiceID, IL.InvoiceSequence, IL.InvoiceLineItemAmount

Porque está uniendo dos tablas Invoices y InvoiceLineItems que contienen InvoiceID. cambie a Invoices.InvoiceID para que sea correcto.

Tienes la posibilidad dar recomendación a este enunciado si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *