ORA-00918: column ambiguously defined
Bir kolon adı sorgudaki birden fazla tabloda var ve Oracle hangisini kastettiğinizi anlayamıyor. Kolonun başına tablo takma adını yazın.
ORA-00918 ne demek?
Join, aynı kolon adını taşıyan tabloları bir araya getirdiğinde o adın niteliksiz kullanımı belirsiz olur. Oracle tahmin etmek yerine ORA-00918 döndürür. Bir alt sorgu aynı adlı iki kolon verdiğinde de aynısı olur.
ORA-00918 neden olur?
- İki tabloda da
IDya daNAMEgibi bir kolon bulunan bir join. WHERE,ORDER BYya da SELECT listesinde niteliksiz bir ad.- Aynı adlı iki kolon seçen bir alt sorgu.
- Tablolardan birine eklenen ve çalışan bir sorguyu belirsizleştiren yeni bir kolon.
ORA-00918 nasıl çözülür?
- Join’lerde her kolonu tablo takma adıyla niteleyin.
- Alt sorgularda aynı adlı kolonlara farklı takma adlar verin.
- Sorgu bugün çalışsa bile bunu alışkanlık edinin: sonradan yapılan bir
ALTER TABLEo zaman sorguyu bozamaz.
ORA-00918 örneği
İki tabloda da ID kolonu var:
-- ORA-00918: column ambiguously defined
SELECT id FROM orders o JOIN order_lines l ON l.order_id = o.id;
-- Çalışır
SELECT o.id FROM orders o JOIN order_lines l ON l.order_id = o.id;
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-00904ORA-00942ORA-00979 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-00918. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.