v2.5.2
Giriş yap

İKİ TABLOYU NASIL BİRLEŞTİREBİLİRİM?

ilkertuncer
383 defa görüntülendi

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; ?>
codepacks
906 gün önce

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;