En iyi yanıtlayıcılar
Sql sorgusunda tekrarlanan kayıtlar

Soru
-
Merhabalar sql sorgumda tekrarlanan kayıtları istiyorum ama biraz detaylı olarak, sorgunun üzerinde bayağı uğraştım ama oluşturamadım yardımlarınızı bekliyorum
hareketler adında bir tablom var ve kolonlarım şu şekilde: no(int),personelid(int),tarih(date),saat(time(7))
sorgu ile aynı tarihte tekrarlanan personelid numaraları varsa bunları listelemek
SELECT no, personelid, tarih,saat
FROM hareketler
WHERE (tarih IN
(SELECT tarih
FROM hareketler AS hareketler_1
GROUP BY tarih
HAVING (COUNT(tarih) > 1)))burda sadece aynı günde olan kayıtları listeletebildim aynı gün içinde tek personelid olan kayıtlarda görünüyor ben sadece aynı günde tekrarlanan personelid leri çekmek istiyorum, yardımlarınız için teşekkürler.
- Düzenleyen sevko17 10 Şubat 2019 Pazar 16:41
Yanıtlar
-
SELECT h.no, h.personelid, h.tarih, h.saat FROM hareketler H inner join ( SELECT personelId, tarih FROM hareketler GROUP BY personelId, tarih HAVING COUNT(*) > 1 ) D on H.personelId = D.PersonelId And H.Tarih = D.Tarih;
- Yanıt Olarak İşaretleyen sevko17 10 Şubat 2019 Pazar 22:23
-
EXISTS kullanarak farklı bir kod oluşturulabilir ama sonucun pek değişeceğini sanmam.
(1 milyon kayıt ile kendi makinemde denedim, her iki yöntemle de olusturulan plan ayni ve 2-3sn kadar sürüyor).
Herhalde bundan daha hızlı sonuclar icin, ya subquery kismini bir tablo olarak saklayıp guncellerdim, ya da MS SQL Server disinda bir database kullanırdım.
- Yanıt Olarak İşaretleyen sevko17 17 Şubat 2019 Pazar 10:31
Tüm Yanıtlar
-
SELECT h.no, h.personelid, h.tarih, h.saat FROM hareketler H inner join ( SELECT personelId, tarih FROM hareketler GROUP BY personelId, tarih HAVING COUNT(*) > 1 ) D on H.personelId = D.PersonelId And H.Tarih = D.Tarih;
- Yanıt Olarak İşaretleyen sevko17 10 Şubat 2019 Pazar 22:23
-
-
-
Kullanımı cok yaygın. Ona lokal alias deniyor. Oradaki D (...) icindeki subquery icin bir alias ve orada bir alias olmak zorunda, yani farklı bir kullanım degil. O olmadan kullanım sekli yok, varsa da ben bilmiyorum. H ise yine lokal bir alias, uzun uzun hareketler yazmak yerine, o olmasa da olurdu.
-
-
EXISTS kullanarak farklı bir kod oluşturulabilir ama sonucun pek değişeceğini sanmam.
(1 milyon kayıt ile kendi makinemde denedim, her iki yöntemle de olusturulan plan ayni ve 2-3sn kadar sürüyor).
Herhalde bundan daha hızlı sonuclar icin, ya subquery kismini bir tablo olarak saklayıp guncellerdim, ya da MS SQL Server disinda bir database kullanırdım.
- Yanıt Olarak İşaretleyen sevko17 17 Şubat 2019 Pazar 10:31
-