Paradox tablolarda calisirken olusan SQL hatasi

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Paradox tablolarda calisirken olusan SQL hatasi

Mesaj gönderen prenses_ayse »

Merhaba arkadaslar ;

Benden verilen degerler isiginda bir veri tabani programi yazmami istediler.
Bu projede yaklasik 8 adet tablo var ve bu tablolar su sekilde siralaniyor.

Uretim (master)
- uno (autoincrement)
- mno (integer)
- rno (integer)
- miktar

Musteri (detail)
- mno (autoincrement)

recete (detail)
- rno (autoincrement)
- radi (alpha - 20)

ozetle yukaridaki gibidir.

ben , birbirleriyle iliskili iki tablodan ortak olmayan "miktar" alaninin toplamini bulan sql kodunu asagida belirtilen sekilde yazmaya calisiyorum

Master olarak belirledigim tablo icin yazdigim kod (musteri) :

Kod: Tümünü seç

select musteri.mno , musteri.madi from musteri

Detail olarak belirledigim tablo icin yazdigim kod (uretim) :

Kod: Tümünü seç

SELECT SUM(uretim.miktar) , uretim.uno ,  uretim.tarih , recete.radi , musteri.madi 

FROM uretim , recete , musteri 

where (uretim.mno = :mno)

AND (uretim.rno = recete.rno)
AND (uretim.mno = musteri.mno)

Fakat "GROUP BY is required when both aggregate and non-aggregate fields are used in result set"

mesajini aliyorum , cesitli alanlarda gruplama yapmama ragmen bu hatayi giderebilmis degilim sizce bu sorunun kaynagi nedir ?

Yardimci olursaniz minnettar olacagim , simdiden tesekkurler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sum yaptığın alan haricindekilerin hepsini group by yaparak dene.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Mesaj gönderen prenses_ayse »

Sayin aslangeri ;

Dediginizi uygulayinca herhangi bir hata mesaji almadim , program calisti fakat soyle bir sorun var miktar alaninda herhangi bir toplam almayip ayni yani kendi degerini yeniden yaziyor.

Soyle ki ;

Miktar = 5 ise sum of miktar = 5 oluyor.

Bana gerekli olan toplam ise o musterinin almis oldugu recetelerinin miktarlari toplami ve bu da nasil olacak en ufak fikrim yok.

Ilginizden oturu tesekkurler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

örnek kayıtlar verip onlar üzerinde gösterirsen daha anlaşılır olacak. zira tabloların arasındaki bağlantıları tam olarak anlayamadım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Mesaj gönderen prenses_ayse »

aslangeri yazdı:örnek kayıtlar verip onlar üzerinde gösterirsen daha anlaşılır olacak. zira tabloların arasındaki bağlantıları tam olarak anlayamadım.
kolay gelsin.
Peki ;

Uretim tablosu icin veri girisleri;
-uno : 1
-mno : 1
-rno : 1
-miktar : 10
--------------
-uno : 2
-mno : 1
-rno : 1
-miktar : 18
--------------
-uno : 3
-mno : 1
-rno : 2
-miktar : 5

Musteri tablosu icin veri girisleri;
-mno : 1
-adi : Ahmet xxx
--------------
-mno : 2
-adi : Turan xxx
--------------
-mno : 3
-adi : Ayse xxx


Recete tablosu icin veri girisleri ;
-rno : 1
-radi : S450
--------------
-rno : 2
-radi : S455
--------------
-rno : 3
-radi : S460
--------------

Eksik bilgi varsa lutfen sorunuz , ben tamamlamak icin an ve an burada olacagim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.

Kod: Tümünü seç

select m.adi,u.uretimno, r.adi,sum(u.top)
from uretim
left join recete r on
r.id=u.rid
left join musteriler m on
m.id=u.mid
where u.mid=1//ahmet
group by m.adi,u.uretimno, r.adi
böyle bişey olması laızm.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Mesaj gönderen prenses_ayse »

Sayin aslangeri ;

Sorumun cevabi uzulerek soylemeliyim ki en son verdiginiz yanit degil.

Neyse bu sorunun yanitini bulursam sizlerle paylasacagim , ilginizden oturu bir kez daha tesekkur ederim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

sql kodlarımı hatalı yoksa istediğin çıktıyı mı vermiyor.
sql kodları hatalı olabilir çünkü afaki yazmıştım. böyle bişey olabilir diye.
eğer istediğin çıktı değilse. yukardaki girdilerden istediğğin çıktı örneğini ver ona göre bişeyler bakalım.
:wink:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

İlk sorgudan başlarsak; SELECT de SUM dışında verdiklerinizi GROUP lamanız gerektığı uyarısı var.

Kod: Tümünü seç

SELECT SUM(uretim.miktar) , uretim.uno ,  uretim.tarih , recete.radi , musteri.madi
FROM uretim , recete , musteri
where (uretim.mno = :mno)
AND (uretim.rno = recete.rno)
AND (uretim.mno = musteri.mno)
GROUP BY uretim.uno ,  uretim.tarih , recete.radi , musteri.madi
Paradox la zaman kaybetmektense en kısa zamanda RDBMS (Relational Database Management System - İlişkisel Veritabanı Yönetimi) olan bir veri tabanına, tavsiye firebird e zıplayın derim :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla