Mysql kayıtları 1 kere saydırmak
Merhabalar,
Başvuru aldığım bir form var ve bu katılımcıların bilgilerine ulaşmak istiyorum.
Ama her katılımcıyı bir kere saydırmak istiyorum. Bunun için de bayikodunu baz
alarak yapıyorum. Aşağıdaki sorgu
SELECT DISTINCT `bayikodu` FROM katilimcilar ORDER BY `bayikodu`
Kayıt oldukları tabloda adı, soyadı, telefon, bayikodu bilgileri yer alıyor.
Sorguyu çalıştırdığım da bana sadece bayikodu bilgisini veriyor. Benim istediğim
bayikodunu baz alarak başvuruları saysın ama ben o kişilerin diğer bilgilerini
de görebiliyim.
Sorguya bayikodu, adi, soyadı gibi tüm verileri ekleyerek sorgulamak istemiyorum.
Çünkü bayikodunu doğru yazsa bile adı ve soyadı gibi bilgileri farklı yazdığında
bu sefer farklı bir kişi olarak algıladığı için tekrardan sayıyor.
Bunun için nasıl bir sorgu yazabilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
Sorun Mysql deki ayarlardan kaynaklanıyormuş. ONLY_FULL_GROUP_BY devre dışı bırakmak gerekiyormuş.
https://stackoverflow.com/questions/41887460/select-list-is-not-in-group-by-clause-and-contains-nonaggregated-column-inc
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Sorgulama kodu olarak da aşağıdaki kodu kullandığımda işimi gördü.
SELECT * FROM katilimcilar GROUP BY `bayikodu` ORDER BY `bayikodu` ASC
Teşekkürler.
Başka bir sunucuya veritabanı yediğini alıp yükledim. O sunucu da aşağıdaki kodu çalıştırdığımda istediğim sonucu verdi.
SELECT * FROM katilimcilar GROUP BY `bayikodu` ORDER BY `bayikodu` ASC
Normal sunucuda çalıştırdığımda aşağıdaki hatayı alıyorum.
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'veritabani_dosya.katilimcilar.katilimci_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Dediğiniz gibi yaptım da aşağıdaki hatayı alıyorum.
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Aşağıdaki gibi yaptığım da çalışıyor ama select kısmında bayikodu yanına adı gibi diğer bilgileri eklediğimde hata alıyorum.
SELECT bayikodu FROM katilimcilar GROUP BY `bayikodu` ORDER BY `bayikodu` ASC