İKİ TABLOYU NASIL BİRLEŞTİREBİLİRİM?
Merhabalar. categories ve posts adlı iki tablom varç
istiyorum ki posts daki verime eklenen kategory id yi categories tablosundan buldurayım ve hem posts daki id nin hemde eklemiş olduğum kategori id nin bilgilerini alayım.
Böyle bir innerjoin kodu bulunmakta mıdır?
Ayrıca kendi sistemimde şöyle bir kod kullanıyorum fakat blog/ altında konularımı listelerken kategorisini yanlış çekiyor
Konularımı sakladığım tablom: https://prnt.sc/PEqSq2mM5NKM
Kategorilerimi tuttuğum tablom: https://prnt.sc/WK7n8kAGoUWD
Kodum:
<?php
if (!isset($_GET['url']) || empty($_GET['url'])){
header('Location:404.php');
}
$datas = $db->prepare('SELECT * FROM posts WHERE url = ?');
$datas->execute([
$_GET['url']
]);
$data = $datas->fetch(PDO::FETCH_ASSOC);
if (!$data){
header('Location:404.php');
exit;
}
?>
<?php
$categories = $db->query('SELECT
categories.*,
COUNT(`posts`.`id`) AS `totalPosts`
FROM `categories`
LEFT JOIN `posts` ON `posts`.`category_id` = `categories`.`id`
ORDER BY `categories`.`id` DESC')->fetchAll(PDO::FETCH_ASSOC);?>
<?php foreach($categories as $category): ?>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<div class="card mb-3">
<div class="card-header">
<i class="bi bi-folder"></i> Kategori: <a href="<?= '../blog/category/' . seo($category['category_url']) ?>"><?=$category['category_name']?></a>
<a class="Date"><?=$data['date']?> <i class="bi bi-clock"></i></a>
</div>
<div class="card-body">
<?php $imageURL = '../admin/uploads/'.$data["image"]; ?>
<div class="mainİmage"><img src="<?php echo $imageURL; ?>" alt="" /></div><br>
<?=htmlspecialchars_decode($data['content'])?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
Tabloları birleştirsen zaten hem id sini hemde verilerini çekebilirsin
örnek haber tablosuna kayıtlı kategori id ve kategori tablosu id verilerini
aşağıdaki 3 farklı SQL tipinde listeleye bilirsin kodlara bakıp anlayabilirsin mantığını
1. Farklı Tablodan Normal veri çekme Tablo oluşumu haber ve kategori
SELECT H.baslik, K.baslik FROM haber H, kategori K WHERE H.id = K.id
2. Farklı Tablodan INNER JOIN kullanarak veri çekme Tablo oluşumu haber ve kategori
SELECT H.baslik, K.baslik FROM haber H INNER JOIN kategori K ON K.id = H.id
3. Farklı Tablodan LEFT JOIN kullanarak veri çekme Tablo oluşumu haber ve kategori
SELECT H.baslik, K.baslik FROM haber LEFT JOIN kategori USING (id) WHERE 1=1;