wmaraci reklam

Yardım! MYSQL'da Sadece NULL Olmayan Kolonları Çekmek!

5 Mesajlar 1.205 Okunma
pst.net
wmaraci reklam

webtegez webtegez İstersen Milyoner Olursun Kullanıcı
  • Üyelik 04.11.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Elektronik Teknikeri - PHP'ci
  • Konum İstanbul Anadolu
  • Ad Soyad B** P**
  • Mesajlar 329
  • Beğeniler 100 / 99
  • Ticaret 0, (%0)
Arkadaşlar merhaba;

MYSQL'de 2 gündür takıldığım fakat çözemediğim bi konu için MYSQL bilen arkadaşlardan yardım isteyeceğim.

Benim Mysql tablomda içinde JSON kodları bulunan "deger" adında bir kolonum mevcut. Daha kolay açıklayabilmem için hemen aşağıya örnek 3 adet veri gireceğim.
____________________________________________________________

id | u_id | deger |
==============================================
1 | 3 | {"23": ["0", "1", "2", "3"], "25": ["1", "2", "0"]} |
----------------------------------------------------------------------------------- |
2 | 4 | {"49": ["1"], "52": ["0", "1"], "53": ["2"], "54": ["0"]} |
------------------------------------------------------------------------------------
3 | 2 | {"25": ["1"], "52": ["0", "1"], "53": ["2"], "54": ["0"]} |
------------------------------------------------------------------------------------

Çalıştırdığım SQL Sorgum:

SELECT id, u_id, JSON_SEARCH(deger->'$."23"','one','1') as `23`, JSON_SEARCH(deger->'$."49"','one','1') as `49` FROM tablo_adi

SQL Sorgu Sonucu:
___________________________________

id | u_id | 23 | 49 |
===========================
1 | 3 | "$[1]" | NULL |
------------------------------------------------
2 | 4 | NULL | "$[0]" |
------------------------------------------------
3 | 2 | NULL | NULL |
------------------------------------------------

Tam istediğim ve JSON içinde arayıp bulmak istediğim sonuçlar 23 ve 49 kolunun içlerinde çıktı. Şimdi ben burada 23 ve 49 kolonlarının ikisi de NULL olmayan yani 3. ID olmayan tabloyu gizleyip kalan sonuçların u_id değerlerini almak istiyorum.

Yani amaç şu.

23 ve 49 numaralı kolonlarının her ikisinde en az bir adet olmak şartıyla değer var mı?
Evet var ise: 2 kolonda da NULL değeri içermeyen ID'leri çek. (Yani 1. ve 2. ID'ler)

23 ve 49 kolonlarının herhangi birinde en az bir adet bile olsa değer bulunmadı mı?
Evet ise: Hiçbir sonucu döndürme.

Ben burada
HAVING `23`IS NOT NULL or `49` IS NOT NULL
komutunu çalıştırdığımda birinden birinde boş değer döndüğünde diğer dolu değerleir çektiğini gördüm. Ama benim istediğim birinden birinde boş değer döndüğünde hiçbir değer döndürmemesi.

Daha sonra
HAVING `23`IS NOT NULL and `49` IS NOT NULL
komutunu çalıştırdığımda ise hiçbir sonuç döndürmediğini gördüm.

Umarım anlatabilmişimdir.

Bu konuyu projemin gidişatı için acil çözmem gerekmektedir.
Yardımlarınıza gerçekten çok ihtiyacım var.

Teşekkürler.
 

 

Batuhan P. | SoftVore.com
wmaraci
reklam

ulas ulas C# & ASP.NET Kullanıcı
  • Üyelik 25.07.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Full Stack Developer
  • Konum Diğer
  • Ad Soyad U** K**
  • Mesajlar 1403
  • Beğeniler 404 / 404
  • Ticaret 18, (%100)
Ufak bi araştırma yaptım, normal bir kolon adı olmuş olsa null olan değerleri hariçte tutabiliyorsunuz. Alias name atandığında '23', '49' gibi sorun burada başlıyor. Bazı sorgular denedim ancak NULL değerini 0 'a döndürmekten başka bir işe yaramadı. PHP bilgim yok ancak, basit bir mantık ile yol gösterebilirim.

PHP'de En iyisi verileri bir listeye çekip null olmayanları almak olacaktır :)
 

 

technovenue.com

webtegez webtegez İstersen Milyoner Olursun Kullanıcı
  • Üyelik 04.11.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Elektronik Teknikeri - PHP'ci
  • Konum İstanbul Anadolu
  • Ad Soyad B** P**
  • Mesajlar 329
  • Beğeniler 100 / 99
  • Ticaret 0, (%0)

ulas2016 adlı üyeden alıntı

Ufak bi araştırma yaptım, normal bir kolon adı olmuş olsa null olan değerleri hariçte tutabiliyorsunuz. Alias name atandığında '23', '49' gibi sorun burada başlıyor. Bazı sorgular denedim ancak NULL değerini 0 'a döndürmekten başka bir işe yaramadı. PHP bilgim yok ancak, basit bir mantık ile yol gösterebilirim.

PHP'de En iyisi verileri bir listeye çekip null olmayanları almak olacaktır :)


Hocam ilgi ve alakan için gerçekten çok teşekkür ederim.

Evet haklısın. PHP'de mantık yolu ile yapabilirim. PHP konusunda bir çok şeyin üstesinden gelebilecek kadar iyiyim.

Fakat bu benim için en son çare olacak. Hem kendimi daha da geliştirip yeni şeyler öğrenmek, hemde ben kod tarafında her zaman performans ve uzun kodlardan elimden geldiğince kaçan biri olduğum için biraz daha bakacağım.

Eğer sonuç bulamaz isem sizin dediğiniz gibi PHP ile işi geçici süreliğine çözüp daha sonra yavaş yavaş araştırma yapıyor olacağım. :)
 

 

Batuhan P. | SoftVore.com

ulas ulas C# & ASP.NET Kullanıcı
  • Üyelik 25.07.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Full Stack Developer
  • Konum Diğer
  • Ad Soyad U** K**
  • Mesajlar 1403
  • Beğeniler 404 / 404
  • Ticaret 18, (%100)
webtegez Rica ederim. Bana kalırsa PHP ile çözmelisiniz, SQL sorgunuz ne kadar büyüyor, ne kadar karmaşık işler yapmaya başlıyorsa asıl performans sıkıntısı o zaman başlıyor. En azından şuana kadar araştırdığım kadarıyla böyle biliyorum. Kolay gelsin :)
 

 

technovenue.com
wmaraci
Mersin evden eve nakliyat

webtegez webtegez İstersen Milyoner Olursun Kullanıcı
  • Üyelik 04.11.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Elektronik Teknikeri - PHP'ci
  • Konum İstanbul Anadolu
  • Ad Soyad B** P**
  • Mesajlar 329
  • Beğeniler 100 / 99
  • Ticaret 0, (%0)

ulas2016 adlı üyeden alıntı

webtegez Rica ederim. Bana kalırsa PHP ile çözmelisiniz, SQL sorgunuz ne kadar büyüyor, ne kadar karmaşık işler yapmaya başlıyorsa asıl performans sıkıntısı o zaman başlıyor. En azından şuana kadar araştırdığım kadarıyla böyle biliyorum. Kolay gelsin :)


Haklısınız hocam. Bilginiz için teşekkür ederim. Ben o zaman PHP ile işi çözeyim. Eğer bu sorunumu ilerleyen dönemlerde çözer isem burada paylaşıyor olacağım :)
ulas

kişi bu mesajı beğendi.

Batuhan P. | SoftVore.com
wmaraci
Konuyu toplam 3 kişi okuyor. (0 kullanıcı ve 3 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al