İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Yazılım
  4. Diğer Yazılım Konuları
Diğer Yazılım Konuları

SQL Bilenler

emubaltaci02.09.200830 cevap4.751 görüntüleme
2005'den beri19 bin mesaj
#1
arkadaşlar sizden bu konuda yardımcı olmanızı istiyorum SQL bilenler özellikle....
şimdi benim "anket" adında bir veritabanım var aşağıdaki şekilde


By emubaltaci

anketimde cinsiyet ve meslek adı altında iki sütün var görüldüğü üzere
ben sorgumda her meslek grubu için (Örn.: memur olup Erkek olan 5 kişi gibi) cinsiyet sayısını yazacak ve bunların hepsini tek bir tabloda gösterecek bir sorgu istiyorum
yani;
İşçi - Memur - Emekli
Erkek sayısı: 2 3 1

şeklinde

ben tek bir tanesi için yapıp sonucu bulabiliyorum. bu kodda asagıda sorunu daha ii anlayın die yazıyorum
SELECT Count(anket.cinsiyet) AS sonuc1
FROM anket
WHERE (((anket.meslek)="İşçi") AND ((anket.cinsiyet)="ERKEK"));


bu kodu her meslek grubu için tek tek yapıp bir tek tabloda gösterecek yani işçi Sonuc1, memur sonuc2 gibi sütünlar acacak
Cevaplar
2007'den beri6.903 mesaj
#2
Aslında bu işin piri Arbalot'tur, ben kendi bildiğim yöntemle yazayım, bir bilen daha etkili bir yöntem biliyorsa paylaşsın biz de öğrenelim.

Şu şekilde bir sorgu çalıştırmayı dene:

SET @Memur_erkek = ( SELECT count( cinsiyet ) 
FROM anket
WHERE meslek='Memur' AND cinsiyet='ERKEK' ) ;
SET @Isci_erkek = ( SELECT count( cinsiyet ) 
FROM anket
WHERE meslek='İşçi' AND cinsiyet='ERKEK' ) ;
SET @Evhanimi_kadin = ( SELECT count( cinsiyet ) 
FROM anket
WHERE meslek='Evhanimi' AND cinsiyet='KADIN' ) ;
SELECT @Memur_erkek, @Isci_erkek, @Evhanimi_kadin;


Bu kod, şu çıktıyı vermeli:

Memur_erkek -- Isci_erkek -- Evhanimi_kadin
12 -- 21 -- 14


Rakamları örnekledim, burada amaç, Memur ve erkek olanların sayısını bir sütunda, İşçi ve erkek olanların sayısını bir sütunda, Evhanımı ve kadın olanların sayısını bir sütunda ve bu üç sütunun hepsini aynı tabloda göstermek. Meslek ve cinsiyet gruplarını değiştirebilir ve arttırabilirsin. Örneğin bir satır daha yazarak, aynı tabloda öğrenci erkeklerin sayısını da gösterebilirsin.

Umarım istediğin buydu. Yoksa bekle Arbalot gelsin. :)
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#3
geçersiz sql değimi hatası veriyor elmacık :) yinede tsk.ler ben arbolat ı bekliyim en iyisi
2006'den beri79 mesaj
#4
SELECT Meslek, cinsiyet, Count(*) FROM anket
group by Meslek, cinsiyet

-----------

Sonuç aşağıdaki gibi görüntülenmeli
Memur Erkek 5
Emeklli Erkek 2
...
...
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#5
Zebedee dedi: ↑
SELECT Meslek, cinsiyet, Count(*) FROM anket
group by Meslek, cinsiyet

-----------

Sonuç aşağıdaki gibi görüntülenmeli
Memur Erkek 5
Emeklli Erkek 2
...
...
erkek kadın karısık verdi bu verdigin kod
Çıktı aşağıdaki gibi



sadece erkekler için nasıl yaparım birde değer içermiyen meslek gruplarınıda listelemesini istiyorum. yani memur olup erkek çalışan yoksa onuda sıfır olarak göstersin
2006'den beri79 mesaj
#6
SELECT Meslek, cinsiyet, Count(*) FROM anket
where cinsiyet = 'ERKEK'
group by Meslek, cinsiyet

sadece erkekleri gruplar... sıfır olarak görmek istedigin kayitlari için ise biraz düşünmem lazim.
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#7
Zebedee dedi: ↑
SELECT Meslek, cinsiyet, Count(*) FROM anket
where cinsiyet = 'ERKEK'
group by Meslek, cinsiyet

sadece erkekleri gruplar... sıfır olarak görmek istedigin kayitlari için ise biraz düşünmem lazim.
biraz düşünürsen memnun kalacam
isnull kullanılabilirmi?
2006'den beri79 mesaj
#8
select distinct a.meslek, 
  'ERKEK' as cinsiyet, 
  (select count(*) from anket b where cinsiyet = 'ERKEK' and b.meslek = a.meslek) 
from anket a 



-----------------

FireBird veritabaninda sorunsuz ve dogru olarak çalışıyor... Access bunu çaliştirabilir mi fikrim yok..
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#9
Zebedee dedi: ↑
select distinct a.meslek, 
  'ERKEK' as cinsiyet, 
  (select count(*) from anket b where cinsiyet = 'ERKEK' and b.meslek = a.meslek) 
from anket a 

-----------------

FireBird veritabaninda sorunsuz ve dogru olarak çalışıyor... Access bunu çaliştirabilir mi fikrim yok..
kod olarak çalıştı fakat benim 8 meslegim var cıktı olarak 5 meslek verdi :sorry2: geri kalan 3 meslek nerde :smartass:
2007'den beri613 mesaj
#10
emubaltaci dedi: ↑
kod olarak çalıştı fakat benim 8 meslegim var cıktı olarak 5 meslek verdi :sorry2: geri kalan 3 meslek nerde :smartass:
geri kalan 3 meslektekiler erkek olmadığı için çıkmamış olabilir :wassat: Bende deniyorum şimdi :sweatdrop:
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#11
32.sefo dedi: ↑
geri kalan 3 meslektekiler erkek olmadığı için çıkmamış olabilir :wassat: Bende deniyorum şimdi :sweatdrop:
peki sunu soracam sana
benim soru1,soru2,soru3,soru4 ve soru5 olmak üzere tablomda 5 soru var. bu sorulara 0 ile 4 arasında puan veriyorum.
sorum su;
soru1 e 0 puan verenlerin sayısı?
soru1 e 1 puan verenlerin sayısı?
.
.
.
soru1 e 0 puan....?
.
.

bunu nasıl paparım tek bir tabloda
2007'den beri613 mesaj
#12
öncelikle her soruyu aynı tabloda kullanmak biraz karmaşık geldi bana Çünkü sorgu
SELECT count(sifir) as [0], count(bir) as 1, count(iki) as 2, count(uc) as 3, count(4) as 4 from soru1
boyle, her soru için bir tablo açılırsa daha net görünüyor =):wacko:



sonuc da aşagıdaki gibi oldu

2007'den beri613 mesaj
#13
istediğin bumu acaba_?
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#14
32.sefo dedi: ↑
öncelikle her soruyu aynı tabloda kullanmak biraz karmaşık geldi bana Çünkü sorgu
SELECT count(sifir) as [0], count(bir) as 1, count(iki) as 2, count(uc) as 3, count(4) as 4 from soru1
boyle, her soru için bir tablo açılırsa daha net görünüyor =):wacko:



sonuc da aşagıdaki gibi oldu

bak simdi benim tablom asagıdaki sekilde



görüldüğü üzere benim saymak istedigim soru1 e verilen "4" puanların sayısı yani tabloda kaç tane verilmiş mesela soru1 e dört tane "4" puan verilmiş iki tane "3" verilmiş, iki tane "1" puan, üç tane "2" puan verilmiş, sıfır tane "0" puan verilmiş
2007'den beri613 mesaj
#15
select *, count(soru1) as [soru 1'e 4 verenler] from anket where soru1= 4

bu sorguda soru1 e 4 verenlerin tüm bilgileri ve soru1 e 4 verenlerin sayısı görünür. Fakat sen bunun yanına soru1' e 3 verenleri vb vb.. de gostermek istiyosun.. çok kafa karıştırdı bu sorgu =)
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#16
32.sefo dedi: ↑
select *, count(soru1) as [soru 1'e 4 verenler] from anket where soru1= 4

bu sorguda soru1 e 4 verenlerin tüm bilgileri ve soru1 e 4 verenlerin sayısı görünür. Fakat sen bunun yanına soru1' e 3 verenleri vb vb.. de gostermek istiyosun.. çok kafa karıştırdı bu sorgu =)
işte ben soru1 için verilen puanların hepsini bir yerde görmek istiyorum
kod biliyorsan olayı anlaman yeterli oluyor. bende mantıgı kurmaya calısıyorum ve kod bilmyiorum :D
2006'den beri79 mesaj
#17
aslinda kolay gibi...
bi bakayim..
2007'den beri613 mesaj
#18
Zebedee dedi: ↑
aslinda kolay gibi...
bi bakayim..
group by ile yapacaksın daa Kafa dondu benim :):happy::D:D
2006'den beri79 mesaj
#19
select distinct 'Sayilar',
(select count(soru1) from anket where soru1 = 0) as soru1_0,
(select count(soru1) from anket where soru1 = 1) as soru1_1,
(select count(soru1) from anket where soru1 = 2) as soru1_2,
(select count(soru1) from anket where soru1 = 3) as soru1_3,
(select count(soru1) from anket where soru1 = 4) as soru1_4,
(select count(soru1) from anket where soru1 = 5) as soru1_5,

(select count(soru2) from anket where soru2 = 0) as soru2_0,
(select count(soru2) from anket where soru2 = 1) as soru2_1,
(select count(soru2) from anket where soru2 = 2) as soru2_2,
(select count(soru2) from anket where soru2 = 3) as soru2_3,
(select count(soru2) from anket where soru2 = 4) as soru2_4,
(select count(soru2) from anket where soru2 = 5) as soru2_5

from anket
2007'den beri613 mesaj
#20
:wassat:distinct:wassat::wassat: o nerden cıktı yha :D:D =) oluyomu ki acaba böyle_?
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#21
Zebedee dedi: ↑
select distinct 'Sayilar',
(select count(soru1) from anket where soru1 = 0) as soru1_0,
(select count(soru1) from anket where soru1 = 1) as soru1_1,
(select count(soru1) from anket where soru1 = 2) as soru1_2,
(select count(soru1) from anket where soru1 = 3) as soru1_3,
(select count(soru1) from anket where soru1 = 4) as soru1_4,
(select count(soru1) from anket where soru1 = 5) as soru1_5,

(select count(soru2) from anket where soru2 = 0) as soru2_0,
(select count(soru2) from anket where soru2 = 1) as soru2_1,
(select count(soru2) from anket where soru2 = 2) as soru2_2,
(select count(soru2) from anket where soru2 = 3) as soru2_3,
(select count(soru2) from anket where soru2 = 4) as soru2_4,
(select count(soru2) from anket where soru2 = 5) as soru2_5

from anket
çalıştı bu kod zebede saol buna bir sey daha eklemek istiyorum hani hizmet sutunundakilere göre sıralasın yani bu kodu sole edebilirmiyiz
select count (soru2) from anket where soru2=0 and hizmet='Diğer' as soru2_0
2007'den beri6.903 mesaj
#22
emubaltaci dedi: ↑
geçersiz sql değimi hatası veriyor elmacık :) yinede tsk.ler ben arbolat ı bekliyim en iyisi
Aslında ben deneyip yazdım, hatta sayıp sağlamasını bile yapmıştım yanlış yönlendirme olmasın diye; malum konuda uzman değilim çünkü. :)

Belki de MySQL sürümüne göre çift parantez olması gerekiyordur. select ifadelerini bir paranteze daha alarak deneyebilirsin.

Gerçi Zebedee de iyi bir SQL vermiş.
emubaltaci dedi:
yani bu kodu sole edebilirmiyiz
select count (soru2) from anket where soru2=0 and hizmet='Diğer' as soru2_0
Yapabilirsin, yalnız dizim hatalı. Şöyle olmalı:
SELECT COUNT(soru2) as soru2_0 FROM anket WHERE soru2=0 AND hizmet='Diğer'
2007'den beri613 mesaj
#23
emubaltaci dedi: ↑
çalıştı bu kod zebede saol buna bir sey daha eklemek istiyorum hani hizmet sutunundakilere göre sıralasın yani bu kodu sole edebilirmiyiz
select count (soru2) from anket where soru2=0 and hizmet='Diğer' as soru2_0
sıralama kodun sonuna
order by hizmet
olarak yapılır diye biliyorum; a dan z ye sıralama.. yanlıs mı anladım yoksa?
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#24
saolun arkadaşlar büyük ölçüde çözüldü sorunum :D ama bu sorgu bitmez yardmlarınızı bekliyorum ilerdede ;)
2007'den beri613 mesaj
#25
burdayız emu abi =) okulda öğrendikçe yardımcı olmaya çalışıcaz :happy:
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#26
32.sefo dedi: ↑
burdayız emu abi =) okulda öğrendikçe yardımcı olmaya çalışıcaz :happy:
sen ne okuyon ?
2007'den beri613 mesaj
#27
emubaltaci dedi: ↑
sen ne okuyon ?
Bilgisayar bölümü yazılım alanında okuyorum. Lise 4e geçtim bu sene :smartass:
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#28
32.sefo dedi: ↑
Bilgisayar bölümü yazılım alanında okuyorum. Lise 4e geçtim bu sene :smartass:
lise4 te sql :D oda güzel :walkman:
2007'den beri613 mesaj
#29
(Lise3 te) hoca derse önem verenlere özel olarak sql anlattı. Son 2 ay sql veritabanı + visual basic gördük. Tam ısınıyoduk konulara okul bitti :wassat::D:D
emubaltaci Konuyu açan
2005'den beri19 bin mesaj
#30
:stuart:
32.sefo dedi: ↑
(Lise3 te) hoca derse önem verenlere özel olarak sql anlattı. Son 2 ay sql veritabanı + visual basic gördük. Tam ısınıyoduk konulara okul bitti :wassat::D:D
oda güzel bu yazı ii değerlendirmişsindir umarm

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.