Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan kueri dengan nama kolom yang ambigu dalam SQL

Kami menghadapi kesalahan ini saat kami memilih data dari lebih dari satu tabel dengan menggabungkan tabel dan setidaknya salah satu kolom yang dipilih (itu juga akan terjadi ketika menggunakan * untuk memilih semua kolom) ada dengan nama yang sama di lebih dari satu tabel (tabel pilihan/gabungan kami). Dalam hal ini kita harus menentukan dari tabel mana kita memilih kolom.

Berikut adalah contoh implementasi solusi dari konsep yang dijelaskan di atas

Saya pikir Anda memiliki ambiguitas hanya di InvoiceID yang ada di InvoiceLineItems dan Invoices Bidang lain tampak berbeda. Jadi coba Ini

Saya baru saja mengganti InvoiceID dengan 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

Anda dapat menggunakan tablename.columnnae untuk semua kolom (dalam pemilihan, di mana, kelompokkan dan urutkan berdasarkan) tanpa menggunakan alias apa pun. Namun Anda dapat menggunakan alias seperti yang dipandu oleh jawaban lain



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengidentifikasi multi-bagian tidak dapat diikat

  2. Apa yang dimaksud dengan ORDER BY (SELECT NULL)?

  3. Perbarui beberapa kolom dalam SQL

  4. Total Kumulatif di server MS Sql

  5. Mengenal Beban Kerja SQL Server Anda