Mysqlde count ve group by işleminde hata alıyorum
kurthan29.12.2004 - 12:35:11
S.A.

iki tablom var ve bunları ilişkilendiriyorum.
Tablolarımın yapısı şu şekilde

Stok
----------
id
stkkod
Stokad

Stokhavuz
----------------
id
stkkod
depo
alis_fiyat


Bu işleme göre iki tabloyu ilişkilendirerek hangi depoda hangi stoktan kaç adet olduğunu bulmam gerekiyor.Stokhavuz tablosunda her bir kayıt 1 adet stok miktarını simgeliyor.(Böyle yapmamın sebebi x kodlu bir stoktan farklı parti girişlerinde geliş fiyatları farklı olabiliyor)


Bu işlem için yazdığım sql şu şekilde:

Select *,COUNT(stokhavuz.id) from stokhavuz,stok where stokhavuz.stkkod=stok.stkkod GROUP BY STKKOD,DEPO order by depo

bu sorgu normalde sorgu sonucunda 1 den fazla kayıt üretiyorsa sağlıklı çalışıyor.Fakat 1 sonuç üretmişse veya hiç sonuç yoksa aşağıdaki hatayı veriyor :

Myquery1:Type Mismatch for field ' Count(stokhavuz.id) expecting: Largeint Actual:integer

Bu sorun nereden kaynaklanıyor.

Teşekkür ediyor,iyi çalışmalar diliyorum.
 
vampir26129.12.2004 - 12:50:46
Select *,COUNT(stokhavuz.id) from stokhavuz,stok where stokhavuz.stkkod=stok.stkkod GROUP BY STKKOD,DEPO order by depo
oder by depo dan sonra ASC yada DESC yazman gerekmiyormu default olarak ASC mi alıyor yoksa. gerçi senin sorun bu değil ama.


GROUP BY STKKOD,DEPO HAVING (COUNT(stokhavuz.id) > 1)

having kısmını ekle belki çalışır
 
naile29.12.2004 - 13:07:20
Gruplama yaptığınızda gruplanan alanları select ile seçebilirsiniz sadece Select * demeniz burda hatalı yani.
 
kurthan29.12.2004 - 14:31:50
S.A.

arkadaşlar having ile çözümlenemeyeceğini düşünüyorum.Çünkü sonuç 1 den büyükse gibi bir ibare var peki 1 uygun eşleşme olursa onu es mi geçecek.


Teşekkür ediyor,iyi çalışmalar diliyorum.
 
vkamadan30.12.2004 - 09:27:27
merhaba,
bu sorunu bende yaşıyorum farklı bir başlıkta sormuştum ama halen cevap alamadım.
İlginç bir durum.
Sorunun nerde olduğunu bende merak ediyorum.
 
kurthan03.01.2005 - 11:01:54
S.A
delphide veritabanındaki otomatik artan alanlar largeint olarak görülüyor.Bu alanların count işlemi içerisinde kullanılması (ki sebebini anlayamadım) sonucunda largeint olarak döndürülmesini sağlıyor.

otomatik artan alan yerine değeri boş geçilmeyecek başka bir alanın countunu aldığımda sonuç integer olarak gönderiliyor.

Kolay gelsin.
 
vkamadan03.01.2005 - 16:36:46
merhaba,
ben tablomdaki ID alanını yani hiçbir zaman boş olmayacak bir alanı COUNT ile saydırıyorum yinede sonuç sıfırsa sorun çıkıyor.
 
kurthan03.01.2005 - 22:14:39
S.A.

Hocam bir önceki cevaptata problem var benim.

Şöyle çözdüm tabi pek pratik değil daha doğrusu angarya oluyor.

count işlemini yaptığım tabloyu ilk önce başka bir tableden açıyorum.Sonra kayıt sayısı uygunsa query ile sorguyu çalıştırıp raporluyorum ama tek kayıt veya kayıt yoksa tableden querysiz çekiyorum.

Kolay gelsin.
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com