Subquery'de dublicate field name hatası - ÇÖZÜLDÜ
Subquery'de dublicate field name hatası - ÇÖZÜLDÜ
Veri tabanı mysql ama her veri tabanında olabilecek bir şey.
Şu şekilde iki tablom var;
Tablo 1
---------
a b c d
Tablo 2
--------------
a e f g d
select * from tablo1 join tablo2 using(a)
bir problem olmadan sorgu çalışıyor ama
select * from (select * from tablo1 join tablo2 using(a)) as tablo
şeklinde subquery yapınca d field'ı için dublicate hatası veriyor doğal olarak.
Tam olarak nasıl çözeceğimi bulamadım.
Yardım ederseniz sevinirim.
Şu şekilde iki tablom var;
Tablo 1
---------
a b c d
Tablo 2
--------------
a e f g d
select * from tablo1 join tablo2 using(a)
bir problem olmadan sorgu çalışıyor ama
select * from (select * from tablo1 join tablo2 using(a)) as tablo
şeklinde subquery yapınca d field'ı için dublicate hatası veriyor doğal olarak.
Tam olarak nasıl çözeceğimi bulamadım.
Yardım ederseniz sevinirim.
En son mkysoft tarafından 03 Ağu 2006 11:33 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Evet biliyorum ama subquery'im her zaman bu kadar basit olmuyor. Zaten bu sorgular az kullanılan raporlar için çağırılıyor. yapmak istediğim;
kayıt sayısı arttığı için kullanıcı sorguyu çalıştırmadan önce bazı şartlar girebilsin. raporda çağırdığım sorguların bazıları çok karışık bunları analiz edip doğru yerlere şartları yazmak çok daha zor olacaktır bu nedenle view lere benzer bir mantık kurdum.
select * from (mevcut sorgu) where yeni şartlar
Aslında dublicate olan alanlara pekde ihtiyacım yok. en azından sorgunun onlarsız geri dönmesini sağlayabilirsem sorunum çözülecek.
Eğer olmazsa tablolardaki benzer sütun adlarını değiştirmeyi düşünüyorum.
Teşekkürler.
kayıt sayısı arttığı için kullanıcı sorguyu çalıştırmadan önce bazı şartlar girebilsin. raporda çağırdığım sorguların bazıları çok karışık bunları analiz edip doğru yerlere şartları yazmak çok daha zor olacaktır bu nedenle view lere benzer bir mantık kurdum.
select * from (mevcut sorgu) where yeni şartlar
Aslında dublicate olan alanlara pekde ihtiyacım yok. en azından sorgunun onlarsız geri dönmesini sağlayabilirsem sorunum çözülecek.
Eğer olmazsa tablolardaki benzer sütun adlarını değiştirmeyi düşünüyorum.
Teşekkürler.
mysql versiyonum 5.1.9
yapısındaki tabloları oluşturduktan sonra;
sorgunusunu çalıştırınca hata veriyor ve bundan doğal bişi olamaz. seninki neden hata vermiyor anlamadım?
Kod: Tümünü seç
create table `test`.`tablo1` ( `a` varchar (5) NOT NULL , `b` varchar (5) NULL , `d` varchar (5) NULL )
create table `test`.`tablo2` ( `a` varchar (5) NOT NULL , `e` varchar (5) NULL , `d` varchar (5) NULL , PRIMARY KEY ( `a` ) )
insert into `tablo1` (`a`,`b`,`d`) values ( 'a','b','c')
insert into `tablo1` (`a`,`b`,`d`) values ( 'b','a','dd')
insert into `tablo2` (`a`,`e`,`d`) values ( 'a',NULL,NULL)
insert into `tablo2` (`a`,`e`,`d`) values ( 'b',NULL,NULL)
update `tablo2` set `a`='a',`e`='ffg',`d`='dfg' where `a`='a'
update `tablo2` set `a`='b',`e`='sd',`d`='adsf' where `a`='b'
Kod: Tümünü seç
select * from (select * from tablo1 join tablo2 using(a)) as tablo
Kod: Tümünü seç
tablo2 deki alanlarada ihtiyacım var. ayrıca subquery olarak kullandığım alanda hangi tabloların çağrıldığını her zaman anlamak mümkün olmuyor(ne için böyle bir şey yapma istediğimi yukarıda yazmıştım). ayrıca yazsamda hata vermeye devam ediyor.
Bendeki versiyonda hata veriyor. Birde mysql'in kendi sitesinde sorayım bakalım ne çıkacak.
teşekkürler.
Bendeki versiyonda hata veriyor. Birde mysql'in kendi sitesinde sorayım bakalım ne çıkacak.
teşekkürler.
Sorunuma kısmende olsa şu şekilde bir çözüm buldum. Bildiğiniz gibi HAVING komutu where,group by,order by parametrelerinden sonra kullanılabilir. sql sorgusunu taratıp içinde HAVING geçiyorsa yeni kriterleri oraya ekliyorum eğer yoksa sorgunun en sonuna having ile birlikte dahil ediyorum. Henüz çalışmayan sorgum olmadı.
İlginize teşekkürler.
İlginize teşekkürler.