Skip to main content

#EvdeKal


Union Sorgu İle Az İle Çoku Birleştirmek

Union Sorgu İle Az İle Çoku Birleştirmek

Çözüldü #1
iyi günler iki adet Sql listemiz var birisinde 

Kod:
SELECT Tmp.dyeri AS a, Tmp.Sayid AS b
FROM (SELECT TOP 10 tPersonel.dyeri, Count(tPersonel.id) AS Sayid FROM tPersonel GROUP BY tPersonel.dyeri HAVING (((tPersonel.dyeri) Is Not Null)) ORDER BY Count(tPersonel.id) DESC)  AS Tmp
ORDER BY Tmp.dyeri;

ile en fazla geçen yerlerden 10 tanesi alfabetik sıralı
diğer Sql listemizde 

Kod:
SELECT tPersonel.dyeri, Count(tPersonel.id) 
FROM tPersonel
GROUP BY tPersonel.dyeri
ORDER BY Count(tPersonel.id) DESC;

 tüm yerler en sık geçme durumuna göre listeleniyor
şimdi bunları Union ile birleştirip
en sık geçen 3 eleman altına diğerlerini ekleyeceğiz
ilk 3 tane ve diğerleri kendi aralarında alfabetik listeli olacak

Kod:
ankara --   100
istanbul -   200
izmir   ---   150
adana  ---   3
adıyaman-- 5
afyon --6
ağrı -------  15
amasya --- 4
--------------> ankara üstte geçtiği için yok
antalya-- 25

şeklinde bir liste lazım

.rar Database6.rar (Dosya Boyutu: 370,28 KB | İndirme Sayısı: 3)
@benbendedeilem (https://www.excelsizeyeter.com/excelsize...krolar.php)
Son Düzenleme: 21/04/2020, 16:33, Düzenleyen: accessman.
Cevapla
#2

Kod:
SELECT Tmp.dyeri AS a, Tmp.Sayid AS b
FROM (SELECT TOP 10 tPersonel.dyeri, Count(tPersonel.id) AS Sayid FROM tPersonel GROUP BY tPersonel.dyeri HAVING (((tPersonel.dyeri) Is Not Null)) ORDER BY Count(tPersonel.id) DESC)  AS Tmp
ORDER BY Tmp.dyeri union 
SELECT tPersonel.dyeri AS a, Count(tPersonel.id) AS b FROM tPersonel GROUP BY tPersonel.dyeri HAVING (((tPersonel.dyeri) Is Not Null));

şöyle yazınca da az ile çokları tek alfabetik listede birleştirdi

@benbendedeilem (https://www.excelsizeyeter.com/excelsize...krolar.php)
Cevapla
#3
öncelikle dogumyeri alanı kısa metin olmalı uzun metin alanında sorun çıkarabilir
Top 10

SQL Code
SELECT Tmp.dyeri, Tmp.Sayid, *
FROM (SELECT TOP 10 tPersonel.dyeri, Count(tPersonel.id) AS Sayid FROM tPersonel GROUP BY tPersonel.dyeri HAVING (((tPersonel.dyeri) Is Not Null)) ORDER BY Count(tPersonel.id) DESC)  AS Tmp
ORDER BY Tmp.dyeri;

top 10 dışında kalanların sıralaması

SQL Code
SELECT tPersonel.dyeri, Count(tPersonel.id) AS Sayid
FROM tPersonel LEFT JOIN SqlTop ON tPersonel.dyeri = SqlTop.dyeri
WHERE (((SqlTop.dyeri) Is Null))
GROUP BY tPersonel.dyeri
HAVING ((Not (tPersonel.dyeri) Is Null));

2si Union all ile birleşiyor ama maalesef Unionlu sorguda top 10 kısmını alfabetik sıralamayı başaramadım
union içinde de sıralamaya çalıştım ama olmadı
belki bendeki ofis programından kaynaklı bir sorundur

SQL Code
select * from sqltop order by dyeri
UNION ALL 
select * from sqldgr;

şeklinde union sorgusunu deneyebilirsiniz

.rar Alfabetik_hy.rar (Dosya Boyutu: 48,07 KB | İndirme Sayısı: 3)
Cevapla
#4
Sorunuz cozume kavustu mu? Bahsettiğiniz kodu denediğimde tüm kayıtlar alfabetik olarak geldi, sizin istediğiniz böyle birşey değildi yanılmıyorsam?
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da