v2.5.2
Giriş yap

PHP inner join hakkında

hakan16
766 defa görüntülendi

Merhaba 3 adet tablom var hesaplar, gelir ve gider. Örnek olarak kullanıcı id'si 1 olanların hangi hesaplarının olduğunu ve o hesaplara ait gelir ve gider tablosundaki verilerini göstermek istiyorum. Hesaplar tablosunda o kullanıcıya ait hesaplar var yani toplam_para=sum(gelir)-sum(gider) yapmak istiyorum.

<?php
    <?php 
           
                $gelir=$db->prepare("select hesap_id, hesap_adi, toplam_para, gelir_tutari, gider_tutari from  hesaplar inner join gelir on hesaplar.kullanici_id=gelir.kullanici_id 
                                                             inner join gider on hesaplar.kullanici_id=gider.kullanici_id where hesaplar.kullanici_id=$id  GROUP BY hesaplar.hesap_adi
                                                                                                                                                                  ");
                    $gelir->execute();
                    $gelecek=$gelir->fetchAll();
                    print_r($gelecek);
                    foreach($gelecek as $hesaps){  ?>
                     
                        <li class="hesap_listesi_hesaplar_hesap">
              <a href="gecmis.php">
                <span class="hesap_title"><?php echo ucfirst_tr($hesaps['hesap_adi']); ?></span>
                <span class="hesap_bakiye"><?php echo number_format($hesaps['toplam_para'], 0, ",",".")." ₺";?></span>
              </a>
             </li>
                    <?php }  ?>
?>
onlywhatchess
1385 gün önce

Selamlar Hocam,
Bildiğim kadarıyla birleştirdiğin anahtarı sorgularında kullanamıyorsun.
Senin sorgundaki kullanici_id gibi örnek olarak


SELECT * FROM 
gelir gl JOIN gider gd 
ON gl.kullanici_id = gd.kullanici_id // Birleştirilen anahtarlar
WHERE gl.kullanici_id = 3 veya gd.kullanici_id = 3 veya kullanici_id = 3

bu şekilde dahi kullanımı mevcut değil. Demem o ki veritabanını yeniden düzenlemen gerekicek.

Dediklerime ek olarak, uzun olan tablo isimlerini


SELECT * FROM tablo_adi AS ta WHERE ta.sutun_adi = 'deger';
/*--------- veya ------*/
SELECT * FROM tablo_adi ta WHERE ta.sutun_adi = 'deger';

şeklinde kısaltıpta kullanabilirsin.