slm arkadaslar
bir sorgum var ve uyuz oldum mysql de calsıyor ama sql serverda
yapamadım yani ben sadece DB_MASKOD gore gruplasın istiyorum
SELECT DB_maskod,DB_MARKA,DB_MODEL,DB_TIP,DB_ADI,(altgrp.ad) altad FROM DBKART
INNER JOIN altgrp on
dbkart.db_grupkodu=altgrp.akod and dbkart.db_altkod=altgrp.kod
GROUP BY DB_MASKOD ORDER BY dbkart.db_altkod,DB_ADI,DB_TIP
nasıl bir yol izlemem gerekiyor?
group by karısıklıgı
Eğer group by kullanıyorsanız select ile seçtiğiniz alanları ya group by da gruplamalısınız ya da alanları sum,count,min gibi bir fonksiyon ile gruplamalısınız. Yani sizin kodunuz ya şu şekilde olmalı:
ya da
mantıken düşünecek olursanız, bir alana göre grupladığınızda diğer alanı da seçmek istediğinizde eğer farklı iki değer varsa hangisini getirmesini bekliyorsunuz?
Yani şöyle düşünün:
alan1 alan2
1 a
1 b
alan1 e göre grupladınız ve 1 değerleri gruplanarak tek satır olarak dönüyor, e bana gruplamadığım alan2 yi de ver derseniz hangi değer getirecek? a yı mı b yi mi?
Umarım anlatabilmişimdir..
Kod: Tümünü seç
SELECT DB_maskod,DB_MARKA,DB_MODEL,DB_TIP,DB_ADI,(altgrp.ad) altad FROM DBKART
INNER JOIN altgrp on
dbkart.db_grupkodu=altgrp.akod and dbkart.db_altkod=altgrp.kod
GROUP BY DB_maskod,DB_MARKA,DB_MODEL,DB_TIP,DB_ADI,altgrp.ad ORDER BY dbkart.db_altkod,DB_ADI,DB_TIP
Kod: Tümünü seç
SELECT DB_maskod,min(DB_MARKA),min(DB_MODEL),min(DB_TIP),min(DB_ADI),min(altgrp.ad) altad FROM DBKART
INNER JOIN altgrp on
dbkart.db_grupkodu=altgrp.akod and dbkart.db_altkod=altgrp.kod
GROUP BY DB_maskod ORDER BY dbkart.db_altkod,DB_ADI,DB_TIP
Yani şöyle düşünün:
alan1 alan2
1 a
1 b
alan1 e göre grupladınız ve 1 değerleri gruplanarak tek satır olarak dönüyor, e bana gruplamadığım alan2 yi de ver derseniz hangi değer getirecek? a yı mı b yi mi?
Umarım anlatabilmişimdir..
cvp için tesekkurler
ama benim istedigim diyelikki basit bir örnek vericem
anakartlar var markaları,ve modelleri,serinosu,ismi var
ben diyorumki sadece anakartların su markasına gore listele
ve cıkan sonucta diger bilgilerinde gelmesini istiyorum diger bilgilerin ister grubun en bastaki ister en sondaski olabilir
anlatabildimmi acaba?
ama benim istedigim diyelikki basit bir örnek vericem
anakartlar var markaları,ve modelleri,serinosu,ismi var
ben diyorumki sadece anakartların su markasına gore listele
ve cıkan sonucta diger bilgilerinde gelmesini istiyorum diger bilgilerin ister grubun en bastaki ister en sondaski olabilir
anlatabildimmi acaba?
İşte demekki bu dediğini mysql birşekilde izin veriyor ve artık neye izin verdiyse onu getiriyor. Ozaman sen de benim yazdığım 2. kodu kullanacaksın ve elinle max veya min diyeceksin, ozaman diğer fieldların için en büyük değeri veya en küçük değeri verecek. Eğer iç içe select ile çözdüysen daha yavaş çalışır haberin olsunskyking yazdı: ben diyorumki sadece anakartların su markasına gore listele
ve cıkan sonucta diger bilgilerinde gelmesini istiyorum diger bilgilerin ister grubun en bastaki ister en sondaski olabilir
anlatabildimmi acaba?

- DarkEternal
- Üye
- Mesajlar: 158
- Kayıt: 19 Eki 2005 11:00
Çok Çok Çok Teşekkürler!..naile yazdı:Eğer group by kullanıyorsanız select ile seçtiğiniz alanları ya group by da gruplamalısınız ya da alanları sum,count,min gibi bir fonksiyon ile gruplamalısınız. Yani sizin kodunuz ya şu şekilde olmalı:
ya daKod: Tümünü seç
SELECT DB_maskod,DB_MARKA,DB_MODEL,DB_TIP,DB_ADI,(altgrp.ad) altad FROM DBKART INNER JOIN altgrp on dbkart.db_grupkodu=altgrp.akod and dbkart.db_altkod=altgrp.kod GROUP BY DB_maskod,DB_MARKA,DB_MODEL,DB_TIP,DB_ADI,altgrp.ad ORDER BY dbkart.db_altkod,DB_ADI,DB_TIP
mantıken düşünecek olursanız, bir alana göre grupladığınızda diğer alanı da seçmek istediğinizde eğer farklı iki değer varsa hangisini getirmesini bekliyorsunuz?Kod: Tümünü seç
SELECT DB_maskod,min(DB_MARKA),min(DB_MODEL),min(DB_TIP),min(DB_ADI),min(altgrp.ad) altad FROM DBKART INNER JOIN altgrp on dbkart.db_grupkodu=altgrp.akod and dbkart.db_altkod=altgrp.kod GROUP BY DB_maskod ORDER BY dbkart.db_altkod,DB_ADI,DB_TIP
Yani şöyle düşünün:
alan1 alan2
1 a
1 b
alan1 e göre grupladınız ve 1 değerleri gruplanarak tek satır olarak dönüyor, e bana gruplamadığım alan2 yi de ver derseniz hangi değer getirecek? a yı mı b yi mi?
Umarım anlatabilmişimdir..
Saatlerdir uğraştığım MySql sorgusundaki sum problemini burdaki örnekle çözdüm...