Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQLite - Uyuşan Kondisyon Sayısını Alma HK.
#1
Merhaba,

Örnek verdiğim tabloda;

sqlite1.png

SELECT * FROM kitap WHERE (yazar ="Grigory Petrov" OR yazar ="Panait İstari" OR yazar ="John Ronald Reuel Tolkien") AND (cumle LIKE "%başarı%" OR cumle LIKE "%özgürlük%" OR cumle LIKE "%baskı%" OR cumle LIKE "%ihtilal%" OR cumle LIKE "%İstanbul%" OR cumle LIKE "%çocuk%" OR cumle LIKE "%veda%" );

SQL kodunu çalıştırıyorum. İstediğim sonucu alabiliyorum fakat yeni bir ihtiyaç doğdu. "LIKE %kelime%" şartlarından kaç tanesinin bulunduğunu öğrenmem gerekiyor.

Google amca ile uzun bir sohbetten sonra tek bulabildiğim LIKE hakkında çeşitli kullanım bilgisi. MySql olsaydı belki stored procedure ile bir şeyler yapabilirdim ama SQLite da tıkandım.

Bu konudan nereden başlamalıyım, yardımlarınızı rica ediyorum.
Cevapla
#2
select count(*) from kitap where ......
count(*) cevabı sorduğun şeyin cevabı mı, yoksa sen başka bir şey mi soruyorsun acaba?
Cevapla
#3
mysql de explain denilen bir komut vardır, ancak sql lite bunu desteklermi bir fikrim yok.

şurada.

şöyle;

 EXPLAIN SELECT * FROM foo WHERE foo.bar = 'infrastructure as a service' OR foo.bar = 'iaas'; 
Cevapla
#4
(20-12-2020, Saat: 18:21)bibilen Adlı Kullanıcıdan Alıntı: select count(*) from kitap where ......
count(*) cevabı sorduğun şeyin cevabı mı, yoksa sen başka bir şey mi soruyorsun acaba?

Hocam count(*) ile uyuşan satır sayısını alabiliyorum. Benim istediğim like ifadelerinden kaç tanesinin başarılı sonuç verdiğini öğrenmek.

cumle LIKE "%başarı%" = TRUE
cumle LIKE "%özgürlük%" = False
cumle LIKE "%baskı%"= TRUE

2 başarılı sonuç elde edildi. Şeklinde bir sonuca ulaşmaya çalışıyorum.

(20-12-2020, Saat: 18:40)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: mysql de explain denilen bir komut vardır, ancak sql lite bunu desteklermi bir fikrim yok.

şurada.

şöyle;

 EXPLAIN SELECT * FROM foo WHERE foo.bar = 'infrastructure as a service' OR foo.bar = 'iaas'; 

Explain çıktısı içerisinde bu yönde bir bilgi satırı bulunmuyor. Farklı like aramalarıyla denedim fakat kaç tane şartın doğru/yanlış olduğu yönünde bir bilgi vermedi.
Cevapla
#5
(20-12-2020, Saat: 19:40)berk06 Adlı Kullanıcıdan Alıntı:
(20-12-2020, Saat: 18:21)bibilen Adlı Kullanıcıdan Alıntı: select count(*) from kitap where ......
count(*) cevabı sorduğun şeyin cevabı mı, yoksa sen başka bir şey mi soruyorsun acaba?

Hocam count(*) ile uyuşan satır sayısını alabiliyorum. Benim istediğim like ifadelerinden kaç tanesinin başarılı sonuç verdiğini öğrenmek.

cumle LIKE "%başarı%" = TRUE
cumle LIKE "%özgürlük%" = False
cumle LIKE "%baskı%"= TRUE

2 başarılı sonuç elde edildi. Şeklinde bir sonuca ulaşmaya çalışıyorum.

(20-12-2020, Saat: 18:40)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: mysql de explain denilen bir komut vardır, ancak sql lite bunu desteklermi bir fikrim yok.

şurada.

şöyle;

 EXPLAIN SELECT * FROM foo WHERE foo.bar = 'infrastructure as a service' OR foo.bar = 'iaas'; 

Explain çıktısı içerisinde bu yönde bir bilgi satırı bulunmuyor. Farklı like aramalarıyla denedim fakat kaç tane şartın doğru/yanlış olduğu yönünde bir bilgi vermedi.

SELECT cumle, count(*) FROM kitap
WHERE (yazar ="Grigory Petrov" OR yazar ="Panait İstari" OR yazar ="John Ronald Reuel Tolkien")
AND (cumle LIKE "%başarı%" OR cumle LIKE "%özgürlük%" OR cumle LIKE "%baskı%" OR cumle LIKE "%ihtilal%" OR cumle LIKE "%İstanbul%" OR cumle LIKE "%çocuk%" OR cumle LIKE "%veda%" )
group by cumle;
Cevapla
#6
(20-12-2020, Saat: 19:44)bibilen Adlı Kullanıcıdan Alıntı:
(20-12-2020, Saat: 19:40)berk06 Adlı Kullanıcıdan Alıntı: Hocam count(*) ile uyuşan satır sayısını alabiliyorum. Benim istediğim like ifadelerinden kaç tanesinin başarılı sonuç verdiğini öğrenmek.

cumle LIKE "%başarı%" = TRUE
cumle LIKE "%özgürlük%" = False
cumle LIKE "%baskı%"= TRUE

2 başarılı sonuç elde edildi. Şeklinde bir sonuca ulaşmaya çalışıyorum.


Explain çıktısı içerisinde bu yönde bir bilgi satırı bulunmuyor. Farklı like aramalarıyla denedim fakat kaç tane şartın doğru/yanlış olduğu yönünde bir bilgi vermedi.

SELECT cumle, count(*) FROM kitap
WHERE (yazar ="Grigory Petrov" OR yazar ="Panait İstari" OR yazar ="John Ronald Reuel Tolkien")
AND (cumle LIKE "%başarı%" OR cumle LIKE "%özgürlük%" OR cumle LIKE "%baskı%" OR cumle LIKE "%ihtilal%" OR cumle LIKE "%İstanbul%" OR cumle LIKE "%çocuk%" OR cumle LIKE "%veda%" )
group by cumle;

Günaydın,

Hocam count ile sadece etkilenen satır sayısını alabiliyorum. Benim yapmaya çalıştığım 5 tane like ifadesi verdiysem, kaç tanesi sonuçlanıyor.

Dil bilimsel akademik bir araştırma yapıyoruz. Mesela Tolkein en çok kullandığı 11 kelimeyi herhangi bir paragrafında kaç defa kullanmış. Türkçe eklemeli-çekimli bir dil olduğu için like %kelime kökü% şeklinde sonuç alabiliyoruz.
Cevapla
#7
Merhaba,
LIKE ile hiç bir yol kat edemediğim için farklı yöntemler deniyorum. Sonuca baya yaklaştım sayılır.

SELECT     
Count(CASE WHEN  (instr(cumle, ('ihtilal'))) > 0 THEN '1' else '0' END) as sonuc
,
Count(CASE WHEN  (instr(cumle, ('Petrov'))) > 0 THEN '1'  else '0' END) as sonuc

FROM kitap  

şeklinde öğrenebiliyorum. 

SQL örneklerine baktığımda genelde replace ile aranan ifadeyi silip cümledeki değişikliğe göre sayı belirlemişler(veya var yok demişler). Stored Procedure olmadan baya sıkıntılı bir durum bence.

Yine yardımlarınıza talibim. Yukarıda ki kod ile 2 tane sonuc sütunu çıktısı alıyorum.

sqlite2.png

Bu sonuçların toplamını SQL ile nasıl alabilirim?
Cevapla
#8
Merhaba berk hocam, bu şekilde olabilir belki,

select col1, count(1)
from (
select col1 from demo where yil = "2021" and ay = "1"
union all
select col2from demo where yil = "2021" and ay = "1"
union all
select col3 from demo where yil = "2021" and ay = "1"
) t
group by col1 order by  count(1) desc


bir de burda bir şeyler var
https://blog.softhints.com/mysql-count-words-column/
Cevapla
#9
(22-12-2020, Saat: 18:23)eroniko Adlı Kullanıcıdan Alıntı: Merhaba berk hocam, bu şekilde olabilir belki,

select col1, count(1)
from (
select col1 from demo where yil = "2021" and ay = "1"
union all
select col2from demo where yil = "2021" and ay = "1"
union all
select col3 from demo where yil = "2021" and ay = "1"
) t
group by col1 order by  count(1) desc


bir de burda bir şeyler var
https://blog.softhints.com/mysql-count-words-column/

Verdiğiniz kod tam olarak istediğimi karşıladı hocam. Çok teşekkür ederim, yeni bir şey öğrenmiş oldum Smile
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  postgresql de yedek alma esistem 4 1.711 24-10-2019, Saat: 18:10
Son Yorum: esistem
  Otomatik Yedek Alma Scripti 3ddark 5 2.423 29-07-2019, Saat: 10:43
Son Yorum: 3ddark
  SQLite veritabanında eş zamanlı kaç kullanıcı işlem yapabilir? Abdullah ILGAZ 10 5.877 06-05-2019, Saat: 16:55
Son Yorum: engerex
  sqlite oluşturma-android içerisinde kullanma ? Mr.Developer 8 3.819 30-05-2018, Saat: 23:25
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi