Skip to main content

AccessTr.neT


having sql soru?

ahmetbaskesen
ahmetbaskesen
SQL
3
3949

having sql soru?

#1
select kategori, tanim
from mallar left join göstermek on göstermek.invnr=mallar.invnr
group by kategori, tanim,göstermek.invnr
having count(*) = (select count(*)
from gösterimodalari)


arkadaslar soru BÜTÜN gösterimodalarinda gösterilen mallarin hangi kategoriye ayit oldugunu ve tanimini bulmak(ceviride kusurum olduysa af ola almancadan cevirdim) sorunun cevabi bu dogru ama anlamadigim bütün gösterimodalari derken neden count(*) having de kullaniliyor count(*) yaptigim zaman sadece o alanda bulunan ögelerin sayisini bulmus olmazmiyim????


yardimlariniz icin simdiden tesekkür ederim
Cevapla
#2
Alıntıdır..

Alıntı:HAVING:

HAVING (SAHİP)

Gruplandırarak kümeleme fonksiyonunu uygularken koşulda verilebilir.Bu durumda grup üzerindeki hesaplamalarla ilgili koşul belirtilirken HAVING (SAHİP) sözcüğü kullanılır.

ÖRNEK: En yüksek maaşın 9000000’dan fazla oldugu bölümlerdeki personele ait ortalama maaşları listele.

SELECT böl_no,AVG (brüt)
FROM personel
GROUP BY böl_no
HAVING AVG(brüt)> 9000000;

HAVING sözcüğü SELECT konusunda GROUP BY bulunmadığı zaman geçersizdir. HAVING sözcüğünü izleyen ifade içinde SUM , COUNT(*) ,AVG, MAX yada MIN fonksiyonlarından en az biri bulunmalıdır.
HAVING sözcüğü sadece gruplanmış veriler üzerindeki işlemlerde geçerlidir.
WHERE sözcüğü bir tablonun tek tek satırları üzerinde işlem yapan koşullar içinde geçerlidir.
Bazı durumlarda HAVING ve WHERE sözcükleri ile birlikte SELECT komutu içinde kullanılabilir.

ÖRNEK: Personel tablosu içinde her bölümde erkek personele ait maaşlar için ortalamanin 9000000’dan fazla oldugu bölümleri listele.

SELECT böl_no, AVG (brüt)
FROM personel
WHERE cins= .T.
GROUP BY böl_no
HAVING AVG (brüt) > 9000000;
Cevapla
#3
Alıntı:Soru: Bütün gösterimodalari 'nda gösterilen mallarin hangi kategoriye ait oldugunu ve tanimini bulmak

Kod:
select kategori, tanim
from mallar left join göstermek on göstermek.invnr=mallar.invnr
group by kategori, tanim, göstermek.invnr
having count(*) = (select count(*) from gösterimodalari)

mallar ve göstermek tablosu ilişkilendirilmiş,
(göstermek ve gösterimodalari adlı tablolar arasındaki ilişkiyi göremiyoruz ama sanırım ikisi aynı tablo, aynı veriler)

having count(*) ile sadece ilgili grup'taki (group by kategori, tanim, göstermek.invnr) kayıt sayısı bulunuyor
ve gösterimodalari tablosundaki kayıt sayısı (select count(*) from gösterimodalari) ile karşılaştırılıyor.

having count(*) , o malın tüm göstermek tablosundaki kayıtlarını gösteriyor.
örneğin; gösterimodalari tablosunda 5 adet kayıt olduğunu kabul edersek,
having count(*) = 5 olan kayıtlar tüm göstermek adlı tablodaki kayıtlarda var demektir.

Umarım anlatabilmişimdir.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
#4
ben de size örnek vereyim
HAVİNG: Gruplandırılmış verilerin var olan koşula sahip olup olmadı kontrolu yapılır. Bu ifade genellikle sum(), avg, min(), max() , vs. gibi ifadeler ile kullanılır.
Örnek1: Mal sağlayan firmanın 100 den büyük olanları getir.
SELECT SUM(Quantity)SupplierID FROM [Order Details] GROUP BY ProductID
HAVING SUM(Quantity)>100

Örnek2: 30.01.1990 yılından sonra işe başlıyanların ortalama ücreti hesaplanmak istenirse;
Select AVG (aylik_ücret) From ucretler Where baslama_tarih>'30.01.1990';
Örnek3:Hurma siparişini 700 den çok verenleri getir.
SELECT SUM(Quantity)Orderdate FROM [Order Details] GROUP BY ProductID
HAVING SUM(Quantity)>700
kolayy gelsin hepinize
Img-grinImg-grin
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task