PHP inner join hakkında
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 } ?>
?>
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.