Merhaba arkadaşlar. 2 tablom var;
yazi=yazi_id--yazi_ad--kategori_id
kategori=kategori_id,kategori_ad

Yapmak istediğim şey yazıya birden çok kategori ekleyip index sayfasında da id olarak çektiğim kategorileri ad olarak yazdırmak. Örneğin Bir yazıya implode ederek 3 kategori ekliyorum. Çekerken ise explode edip çekiyorum. Aşağıda yazdığım kod sorunsuz çalışıyor ama inner join yapmadan çalıştı.

<?php 
ob_start();
include 'tools/trigger.php';

$yazisor=$db->prepare("SELECT * FROM yazi ORDER BY yazi_id");
$yazisor->execute(); 
?>


<form method="post" action="tools/trigger.php">
	<table border="1" align="center">
		<tr>s
			<td><input type="submit" value="coklu sil" name="submit">
			</td>
			<td>AD</td>
			<td>KATEGORI</td>
		</tr>

		<?php
		while ($yazicek=$yazisor->fetch(PDO::FETCH_ASSOC)) {  ?>

		<tr>
			<td><center><input type="checkbox" value="<?php echo $yazicek['yazi_id']; ?>" name="chk[]"></center></td>
			<td><?php echo $yazicek['yazi_ad']; ?></td>
			<td>

				<?php 
				$a=$yazicek['kategori_id'];
				$b=explode(",",$a);
				foreach ($b as $kategoribas) { 
					$kategorisor=$db->prepare("SELECT * FROM kategori where kategori_id=$kategoribas");
					$kategorisor->execute(); 
					$kategoricek=$kategorisor->fetch(PDO::FETCH_ASSOC);
					?>
					<button><?php echo $kategoricek['kategori_ad']; ?></button>
					<?php  } ?>
				</td>
			</tr>
			<?php }?>
		</table>
	</form>
Sormak istediğim şey bu kod verimli mi yoksa inner join kullanmadıgım için sistemi gereksiz yorar mı? Sorgu gereksiz yere 2 kere while döngüsüne girdiği için tereddüt yaşıyorum.

Inner join ile denedim, fakat bu defa da explode ederken sorun yaşadım. Sadece ilk kategori adını çekiyor aşağıdaki kod gibi yapınca.

<?php 
ob_start();
include 'tools/trigger.php';

$yazisor=$db->prepare("SELECT
yazi.yazi_id,
yazi.kategori_id,
yazi.yazi_ad,
yazi.yazi_resimyol,
kategori.kategori_id,
kategori.kategori_ad
FROM
kategori
INNER JOIN yazi ON kategori.kategori_id = yazi.kategori_id");
$yazisor->execute(); 
?>

<form method="post" action="tools/trigger.php">
	<table border="1" align="center">
		<tr>s
			<td><input type="submit" value="coklu sil" name="submit">
			</td>
			<td>AD</td>
			<td>KATEGORI</td>
		</tr>

		<?php
		while ($yazicek=$yazisor->fetch(PDO::FETCH_ASSOC)) {  ?>

		<tr>
			<td><center><input type="checkbox" value="<?php echo $yazicek['yazi_id']; ?>" name="chk[]"></center></td>
			<td><?php echo $yazicek['yazi_ad']; ?></td>
			<td>

				<?php 
				$a=$yazicek['kategori_id'];
				$b=explode(",",$a);
				foreach ($b as $kategoribas) { ?>
					<button><?php echo $yazicek['kategori_ad']; ?></button>
					<?php  } ?>
				</td>
			</tr>
			<?php }?>
		</table>
	</form>
İlk kod sorunsuz çalışıyor ama inner join ile daha sadece şekilde dediğimi yapabilir miyim? Umarım sorunu anlatabilmişimdir. Teşekkürler.