Bir hane halkının üyelerini saklamak için MySQL'de bir masa var. Görünüşe göre bu, ev tabloları ile bire bir ilişki vardır.Herkesin belirli bir yaşın üstünde olduğu tüm evleri bulmak için SQL sorgusu
Örnek veri olabilir:
1, 1, 1, 1980
2, 1, 2, 1977
3, 2, 1, 1969
4, 3, 1, 1950
Etc...
tüm üyeler belirli bir yaşın üzerinde olan tüm ev bulmak için en verimli sorgu nedir
?Teşekkürler!
select houseid
from housemembers
group by houseid
having max(year_of_birth) < date_sub(curdate(), interval @age years);
bir başka yöntem not in
/not exists
kullanır, ancak tekilleştirme gerektirir:
select distinct houseid
from housemembers hm
where not exists (select 1
from housemembers hm2
where hm2.houseid = hm.houseid and
year_of_birth >= date_sub(curdate(), interval @age years)
);
Bu ilk sürümü daha fazla verimli muhtemelen
Yoksa bu veri depolamak için doğru yol değil mi? –
Tablo isminin “ev sahipleri” olduğunu ve “ev” nin “hane” tanımlayıcısını içerdiğini düşünmekteyim. –
Evet. Doğru! –