iç içe sorgu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

iç içe sorgu

Mesaj gönderen pasa_yasar »

iyi çalışmalar;
aşağıda yazdığım sorguyu çalıştırdığımda

Kod: Tümünü seç

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
hatasını veriyor. Birden fazla alanda kısıtlama
yapmam gerekiyor. cari koduna ,adına veya özel koduna göre böyle bir sorguyu nasıl yapabilirim. veri tabanı MS SQL 2000.t

Kod: Tümünü seç

SELECT dbo.carihareketler.ckod , dbo.carihareketler.cad, dbo.carihareketler.islemtarih , dbo.carihareketler.islemno ,
dbo.carihareketler.toplamtutar , dbo.carihareketler.aratoplam , dbo.carihareketler.kdvtutar , dbo.carihareketler.ekbilgi,dbo.carihareketler.ID,dbo.carihareketler.CID,
dbo.carihareketler.indirimtutar ,  dbo.carihareketler.durum ,  dbo.carihareketler.turu ,dbo.carihareketler.faturaturu 
FROM dbo.cari , dbo.carihareketler ,
dbo.stokislemicerik
where 
( dbo.carihareketler.turu='Satış Faturası'
  or  dbo.carihareketler.turu='Satış İrsaliyesi' )
and dbo.carihareketler.ckod =(select dbo.cari.carikod , dbo.cari.cariad ,
dbo.cari.ozelkod , dbo.cari.ozelkod2 from cari 
where dbo.cari.carikod='01'
and dbo.cari.cariad='Mustafa YÜKSEL'
and dbo.cari.ozelkod='Ankara'
)
tşk ederim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: iç içe sorgu

Mesaj gönderen sabanakman »

Sorguda yazılan ve where şartında geçen
SELECT dbo.carihareketler.ckod , dbo.carihareketler.cad, dbo.carihareketler.islemtarih , dbo.carihareketler.islemno ,
dbo.carihareketler.toplamtutar , dbo.carihareketler.aratoplam , dbo.carihareketler.kdvtutar , dbo.carihareketler.ekbilgi,dbo.carihareketler.ID,dbo.carihareketler.CID,
dbo.carihareketler.indirimtutar , dbo.carihareketler.durum , dbo.carihareketler.turu ,dbo.carihareketler.faturaturu
FROM dbo.cari , dbo.carihareketler ,
dbo.stokislemicerik
where
( dbo.carihareketler.turu='Satış Faturası'
or dbo.carihareketler.turu='Satış İrsaliyesi' )
and dbo.carihareketler.ckod =(select dbo.cari.carikod , dbo.cari.cariad ,
dbo.cari.ozelkod , dbo.cari.ozelkod2
from cari
where dbo.cari.carikod='01'
and dbo.cari.cariad='Mustafa YÜKSEL'
and dbo.cari.ozelkod='Ankara'
)
renkli kısma dikkat. Birincisi bu şart içinde geçen alt sorgudaki select cümlesinden çok satır çıkarak dbo.carihareketler.ckod= ile (mavi renkli kısım) kıyaslandığında hata çıkarabilir. İkincisi select ile ckod'a karşılık çok alan ismi yazılmış (kırmızı renkli kısım). Asıl hata mesajı bıradan kaynaklanmaktadır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Re: iç içe sorgu

Mesaj gönderen pasa_yasar »

cvp için tşk ederim.nasıl bir sorgu yapmam gerekir bu durumda. faturaları hangi cari kıstaslarına göre sorgulamam gerekiyor. yukarıda tek alan seçince oluyor fakat birden fazla alan seçmem gerekiyor.cari den başlayarak sorgu yapmaya çalıştığım zaman yine aynı sonucu verecek çünkü faturada da bir çok kriter var.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: iç içe sorgu

Mesaj gönderen emin_as »

and dbo.carihareketler.ckod =(select dbo.cari.carikod , dbo.cari.cariad ,
kısmı
and exists (select dbo.cari.carikod , dbo.cari.cariad ,

olarak düzenlemen yeterli olur.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: iç içe sorgu

Mesaj gönderen sabanakman »

Nasıl bir şart yazacaksan ona göre yazılacak sorgu değişir. Buradan değişik öneriler gelir ama karşına gelen liste istediğin liste olmayabilir. Onun için SQL'ce düşünerek soruyu çözebilirsin :mrgreen: !.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Re: iç içe sorgu

Mesaj gönderen pasa_yasar »

tşk ederim çalıştı. umarım uzun vadede sorun çıkarmaz :(
Cevapla