Datatable'da Şartlı Veri Çekme
Merhaba,
Data table kullanarak verilerimi listelemekteyim. Farklı bir sayfada kullanacağım tabloda ise sadece belirli şarttaki verileri listelekmek istiyorum. Örnek verecek olursam ürünün aktiflik ve pasiflik durumunu DB'de bir sütunda 1 ve 0 olarak belirledim buna göre aktif pasif ürün işlemleri yapıyorum. Burada sadece statüsü 1 olan ürünleri listemek istiyorum. Bunun için kaynak önerebilir misiniz ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
merhaba mysql sorgusuna select *,(if(degiskenadi=1,'Aktif','Pasif')) as aktifmi from tabloadi seklinde yaz. dt da degisken adini sirala . sorguda aktif yada pasif yazdigin seklinde kistelenecektirm kolay gelsin.
Kaynak olarak Google'a "mysql where kullanımı" yazdığımda karşıma ilk çıkan sonuç: tasarimkodlama.com/veritabani/mysql/mysql-where-kullanimi
Burada nasıl koşullu veri çekebileceğinizi öğrenebilirsiniz.
Ben yine de bi'kaç örnek vereyim:
WHERE koşulu ile sorgularınızda koşul belirtebiliyorsunuz. @rephp7'nin de yazdığı gibi şu şekilde sorgunuzu çalıştırabilirsiniz:
SELECT * FROM urunler WHERE product_status=1
Böylece urunler tablonuzdaki product_status sütununun değeri 1 olan tüm ürünleri çekmiş olursunuz.
SELECT id, product_name, product_quantity FROM urunler WHERE product_status=1
Böylece urunler tablonuzdaki product_status değeri 1 olan tüm ürünlerin sadece id, product_name ve product_quantity sütunlarını çekmiş olursunuz. Veritabanından sadece işinize yarayacak olan sütunları çekmek önemlidir. Çok aktif istekler geldiğinde veritabanıyla ilişkiniz mümkün olduğunca az olmalı.
SELECT * FROM urunler WHERE product_status <> 0
Böylece urunler tablonuzdan product_status değeri 0'dan farklı olanları (1 olabilir, 2 olabilir, -1 olabilir...) istemiş olursunuz.
SELECT * FROM urunler WHERE product_status = 1 AND product_quantity > 0
Böylece urunler tablonuzdan product_status değeri 1 olan ve product_quantity değeri 0'dan büyük olan tüm ürünleri istemiş olursunuz.
Mesela tablonuzda tükenmiş ürünleri göstermeyecekseniz veritabanından onları istememelisiniz. Adeti 0'dan büyük olanları istediğinizde veritabanından daha az ürün çekmiş olursunuz.
SELECT * FROM urunler WHERE product_status = 1 AND product_quantity > 0 AND product_price >= 10 AND product_price <= 100
Böylece urunler tablonuzdan product_status değeri 1 olan ve product_quantity değeri 0'dan büyük olan ve product_price değeri 10'a eşit veya büyük ve 100'e eşit veya küçük olan tüm ürünleri çekmiş olursunuz.
Yani sadece statüsü 1 olan, adeti tükenmemiş olan ve fiyatı 10-100 lira arası olan ürünleri çekmiş olursunuz.
SELECT * FROM urunler WHERE product_status = 1 AND ((product_quantity > 0 AND product_price >= 10 AND product_price <= 100) OR product_quantity = 0)
Böylece urunler tablonuzdan miktarı 0'dan büyük olup da fiyatı 10-100 arası olan veya miktarı 0 olanları (fiyatına bakılmaksızın) istemiş olduk.