none
kişi sayısını hesaplatma RRS feed

  • Soru

  • merhabalar,

    create proc SP_BringQuestionName
    @AnketorId int
    as
    begin
    select DISTINCT s.id,s.Soru from Anketor_Soru_Cevap AnkeSC inner join Anketor a on AnkeSC.Anketor_id =a.id 
    inner join Anket_Soru s on AnkeSC.Soru_id = s.id
    where AnkeSC.Anketor_id = @AnketorId
    end

    Yukarıdaki SP yi kullanarak ben Anketör ün kullanıcılara sorduğu soruları bulabiliyorum. 

    Şimdiki yapmak istediğim şey ise, Ankete kaç kişini katıldığını bulabilmek.

    Yani, Anketor un sorduğu soruları ben yukarıda aynı olanları getirme demiştim. Bu sorguda ise kaç tane aynı sorudan var sonucunu bulmak istiyorum . Bunu nasıl yaparım?


    ozdemiryazilim



    • Düzenleyen pcci 21 Aralık 2012 Cuma 19:42
    21 Aralık 2012 Cuma 19:39

Yanıtlar

  • Merhaba,

    Tablo yapınızı (tabloların create table cümlesini) paylaşır mısınız? Aksi halde yardımcı olmak isteyenlerin yazdığınız kodu tamamen doğru kabul edip alan isimlerinden tablo yapınızı ve ilişkileri çözmekle vakit harcamaları ve bazı varsayımlarda bulunmaları gerekir.

    Anket girildiğinde tablolarda oluşan verilerden örnekler de verirseniz çözüm bulmak yolunda çok fayda sağlar.

    Aldığınız hata mesajına gelince, SELECT cümlenizin başındaki s.id yani Anket_Soru.id alanı GROUP BY içinde olmalıydı. Count bir küme (aggregate) fonksiyonu olup sorgu cümlesinde fonksiyonun kapsamadığı alanların GROUP BY içine yazılması gerekir. Kısacası, sorgunuzun sonundaki GROUP BY ifadesinden sonra s.id yazmalısınız.

    Saygılar.

    • Yanıt Olarak İşaretleyen pcci 22 Aralık 2012 Cumartesi 10:58
    21 Aralık 2012 Cuma 20:39

Tüm Yanıtlar

  • alter proc SP_NumberOfPeople
    @AnketorId int
    as
    begin
    select DISTINCT s.id ,COUNT (*) as kisisayisi from Anketor_Soru_Cevap AnkeSC inner join Anketor a on AnkeSC.Anketor_id =a.id 
    inner join Anket_Soru s on AnkeSC.Soru_id = s.id
    where AnkeSC.Anketor_id = @AnketorId
    Group By Soru_id
    end

    bunu yazdım hata fırlatıyor.

    Hata : 

    Column 'Anket_Soru.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


    ozdemiryazilim

    21 Aralık 2012 Cuma 19:59
  • Merhaba,

    Tablo yapınızı (tabloların create table cümlesini) paylaşır mısınız? Aksi halde yardımcı olmak isteyenlerin yazdığınız kodu tamamen doğru kabul edip alan isimlerinden tablo yapınızı ve ilişkileri çözmekle vakit harcamaları ve bazı varsayımlarda bulunmaları gerekir.

    Anket girildiğinde tablolarda oluşan verilerden örnekler de verirseniz çözüm bulmak yolunda çok fayda sağlar.

    Aldığınız hata mesajına gelince, SELECT cümlenizin başındaki s.id yani Anket_Soru.id alanı GROUP BY içinde olmalıydı. Count bir küme (aggregate) fonksiyonu olup sorgu cümlesinde fonksiyonun kapsamadığı alanların GROUP BY içine yazılması gerekir. Kısacası, sorgunuzun sonundaki GROUP BY ifadesinden sonra s.id yazmalısınız.

    Saygılar.

    • Yanıt Olarak İşaretleyen pcci 22 Aralık 2012 Cumartesi 10:58
    21 Aralık 2012 Cuma 20:39
  • ewet haklısınıız ancak 4 tane tablo olduğu için hepsinin kodlarını burda belirtmek istemedim. O nedenle bu şekilde yaptım.

    ozdemiryazilim

    21 Aralık 2012 Cuma 20:50
  • yardımlarınızdan dolayı tşkler sorunu hallettim.

    ozdemiryazilim

    22 Aralık 2012 Cumartesi 10:58