lostyazilim
tr.link

sorguları azaltmak için bir yol var mı ?.

9 Mesajlar 1.367 Okunma
lstbozum
tr.link

omrumdely omrumdely Web Tasarım Kullanıcı
  • Üyelik 26.05.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Tasarım
  • Konum Kocaeli
  • Ad Soyad Ö** G**
  • Mesajlar 1468
  • Beğeniler 157 / 158
  • Ticaret 11, (%100)
merhaba arkadaşlar. bir sayfada 18 adet sorgu yapıyorum. yanlış veya doğru.
bu sorguları azaltmak istiyorum.
doğru yol varsa da öğrenmek istiyorum.

Stok daki bu aya ait giriş yapılmış verileri çekliyor.
$biraylikgiris = $db->prepare("
SELECT Sum(sip_urun_adedi) FROM siparis WHERE in_out='Giriş' AND sip_zaman >= NOW() - INTERVAL 1 month
AND stok_id=:id ");
$biraylikgiris->execute(array('id' => guvenlik($_POST['id']) ));
$toplamstok = $biraylikgiris->fetchColumn();
?>


Stok daki bu aya ait kaç kere giriş yapılmış verileri çekliyor.
$biraylikgiris = $db->prepare("
SELECT COUNT(sip_urun_adedi) FROM siparis WHERE in_out='Giriş' AND sip_zaman >= NOW() - INTERVAL 1 month
AND stok_id=:id ");
$biraylikgiris->execute(array('id' => guvenlik($_POST['id']) ));
$toplamstok = $biraylikgiris->fetchColumn();
?>


Stoktaki bu aya ait giriş toplam alış tutarlarını çekiyor.
$biraylikgiris = $db->prepare("
SELECT SUM(sip_birim_fiyati) FROM siparis WHERE in_out='Giriş' AND sip_zaman >= NOW() - INTERVAL 1 month
AND stok_id=:id ");
$biraylikgiris->execute(array('id' => guvenlik($_POST['id']) ));
$toplamstok = $biraylikgiris->fetchColumn();
?>


Ve Sorgular şöyle devam ediyor.
Bu aya ait çıkışlar,
geçen aya ait girişler
geçen aya ait çıkışlar
bu yıla ait girişler
bu yıla ait çıkışlar.
 

 

:)
wmaraci
reklam

HakanKorkz HakanKorkz WM Aracı Kullanıcı
  • Üyelik 07.03.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Mesleğim yok
  • Konum Sakarya
  • Ad Soyad H** K**
  • Mesajlar 250
  • Beğeniler 54 / 66
  • Ticaret 2, (%100)
sorgular birbirleri ile baqğlantılı sorgularsa veritabanı birleştirme işlemi yapabilirsin üstadım inner join yapısını biraz araştır üstadım böyle bir çözüm yapılabilir sanırım..
 

 

https://hakankorkmaz.site

omrumdely omrumdely Web Tasarım Kullanıcı
  • Üyelik 26.05.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Tasarım
  • Konum Kocaeli
  • Ad Soyad Ö** G**
  • Mesajlar 1468
  • Beğeniler 157 / 158
  • Ticaret 11, (%100)
HakanKorkz sorguları yukarda yazdım hocam. join ile alakalı bir durum değil.
 

 

:)

woakazam woakazam WM Aracı Telefon Onaysız
  • Üyelik 02.07.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad A** C**
  • Mesajlar 67
  • Beğeniler 0 / 35
  • Ticaret 1, (%100)
... Şeklinde devam eden sorgularda siparis tablosundan yapılan aramalar ise, siparis tablosunu bi diziye alıp içinden döngülerle işlem yapabilirsiniz.
 

 

wmaraci
wmaraci

omrumdely omrumdely Web Tasarım Kullanıcı
  • Üyelik 26.05.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Tasarım
  • Konum Kocaeli
  • Ad Soyad Ö** G**
  • Mesajlar 1468
  • Beğeniler 157 / 158
  • Ticaret 11, (%100)
woakazam örnek verme şansın var mı ?. benim verdiğim tabloya uygun ?
 

 

:)

mbuturak mbuturak Сомнение единственная п Kullanıcı
  • Üyelik 10.09.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Front-end dev. & Back-end dev.
  • Konum Adana
  • Ad Soyad M** B**
  • Mesajlar 100
  • Beğeniler 14 / 8
  • Ticaret 6, (%100)
Merhaba konuyu yanlış anlamamış isem tek bir sorgu ile istediğiniz koşulları sağlayan verileri çekebilirsiniz diye düşünüyorum örnek verecek olursam;


public function addValue($argse) {
$values=implode(',',array_map(function ($item){
return $item.'=?';
},array_keys($argse)));
return $values;
}

public function tekilveriGetir($tablo_adi,$column,$values,$option=[]) {
try {
$stmt=$this->db->prepare("SELECT * FROM $tablo_adi WHERE $column=?");
$stmt->execute([htmlspecialchars($values)]);
return $stmt;
} catch (Exception $e) {
echo $e->getMessage();
return ['status' => FALSE , 'error' => $e->getMessage()];
}
}


Veri çekme kısmında ise gerekli değerleri göndererek istediğim veriye tablo gözetmeksizin erişim sağlayabiliyorum örnek verecek olursam;


$sql=$db->tekilveriGetir("admin","admin_id",$_GET['id']);
$row=$sql->fetch(PDO::FETCH_ASSOC);









 

 

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Raporlamayı php seviyesinde yapacaksın.

yani geçmişe sair bir yıllık verinin tamamını çek.

Result üstünde dönerken.

Php giriş çıkış ayıracak. Tarih bu ay ise onu hem bu ayın sonuçlarına hemde yıllık giriş şe giriş çıkışsa çıkış sonuçlarına ekleyecek.

ekleyecek derken, kafana göre bir array veya obje yap onun içinde verileri topla. En sonunda sonuçları bas.

loop dönerken echo basmak kadar, insanın programlama yetisini körelten bir şey yoktur. Sonuçları hemen ekrana basmak zorunda değilsiniz. Bir köşeye toplayıp öyle yapın. daha verimli olur.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Hocam zaten bu sorguların hepsini tek bir sorgu olarak çekemiyor musun ?

$biraylikgiris = $db->prepare("
SELECT Sum(sip_urun_adedi),COUNT(sip_urun_adedi),SUM(sip_birim_fiyati) FROM siparis WHERE in_out='Giriş' AND sip_zaman >= NOW() - INTERVAL 1 month
AND stok_id=:id ");
$biraylikgiris->execute(array('id' => guvenlik($_POST['id']) ));
$toplamstok = $biraylikgiris->fetchColumn();
?>


şeklinde
omrumdely

kişi bu mesajı beğendi.

omrumdely omrumdely Web Tasarım Kullanıcı
  • Üyelik 26.05.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Tasarım
  • Konum Kocaeli
  • Ad Soyad Ö** G**
  • Mesajlar 1468
  • Beğeniler 157 / 158
  • Ticaret 11, (%100)
AhmetKarabulut teşekkür ediyorum hocam arkadaş yardımcı oldu. sizin yöntemle aynı ile
 

 

:)
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al