İki tablodada aynı alanlar olduğu için sorgundan istediğin sonucu alamıyorsun
Tablolardaki aynı alanlara farklı sanal isimler vererek çekmelisin.
Ör.
$sql = "SELECT c.id,c.title as 'contentTitle',p.id,p.title as 'pollsTitle' FROM forum_content as c INNER JOIN forum_polls as p ON c.id=p.id WHERE c.username='{$user->username}'";
$query = mysql_query($sql) or die (mysql_error());
$assoc = mysql_fetch_assoc($query);
echo $assoc['contentTitle'];
echo $assoc['pollsTitle'];gibi yapmalısın.
Sanırım bu sefer olacak. Ben sorguyu şöyle değiştirdim.
SELECT c.id as 'contentID', c.title as 'contentTitle',p.id as 'pollsID',p.title as 'pollsTitle' FROM forum_content as c INNER JOIN forum_polls as p ON c.username=p.username WHERE c.username='{$user->username}'Lâkin EzSQL sorgunun dökümünü şöyle gösteriyor:
ezSQL (v2.03) Variable Dump..
Array
(
[0] => Array
(
[contentID] => 7
[contentTitle] => Tanışalım
[pollsID] => 1
[pollsTitle] => Yeni Sitemiz
)
[1] => Array
(
[contentID] => 169
[contentTitle] => Video istek
[pollsID] => 1
[pollsTitle] => Yeni Sitemiz
)
[2] => Array
(
[contentID] => 170
[contentTitle] => Program İstek
[pollsID] => 1
[pollsTitle] => Yeni Sitemiz
)
[3] => Array
(
[contentID] => 171
[contentTitle] => Oyun İstek
[pollsID] => 1
[pollsTitle] => Yeni Sitemiz
)
)
Type: Array
Last Query [17]: SELECT c.id as 'contentID', c.title as 'contentTitle',p.id as 'pollsID',p.title as 'pollsTitle' FROM forum_content as c INNER JOIN forum_polls as p ON c.username=p.username WHERE c.username='Administrator'
Last Function Call: $db->query("SELECT c.id as 'contentID', c.title as 'contentTitle',p.id as 'pollsID',p.title as 'pollsTitle' FROM forum_content as c INNER JOIN forum_polls as p ON c.username=p.username WHERE c.username='Administrator'")
Last Rows Returned: 4Yâni forum_content alanında 4, forum_polls alanında ise 1 tane içerik var. Bu durumda forum_content'i listelerken forum_polls alanındaki içeriği hep tekrarlıyor. Bunu nasıl önleyebiliriz?
Arkadaşım sen söylemek istediğimi anlamadın sanırım, tablolar arasında ilişki yok derken birbiriyle uyumsuz demek istedim. Yani forum_content tablosundaki her kayıta karşı forum_polls tablosunda bir kayıt olmadığından tekrarlaması normal. O nedenle alan adı ilişkelenedirmeleri hakkındaki bilgiyi ekledim.
Senin burada yapman gereken left join kullanmak. Forum_content tablosundaki bütün verileri buna karşın forum_polls tablosunda ilgili yerleri çekeceksin. Yani:
SELECT fc.id, fc.title AS fc_title, fc.user, fp.title AS fp_title
FROM forum_content fc
LEFT JOIN forum_polls fp ON fc.user = fp.user
Bu da ikisinde de aynı sayıda veri olmadığı için tekrarlama yapıyor. EzSQL sorgu dökümü şöyle:
ezSQL (v2.03) Variable Dump..
Array
(
[0] => Array
(
[id] => 7
[fc_title] => Tanışalım
[username] => Administrator
[fp_title] => Yeni Sitemiz
)
[1] => Array
(
[id] => 169
[fc_title] => Video istek
[username] => Administrator
[fp_title] => Yeni Sitemiz
)
[2] => Array
(
[id] => 170
[fc_title] => Program İstek
[username] => Administrator
[fp_title] => Yeni Sitemiz
)
[3] => Array
(
[id] => 171
[fc_title] => Oyun İstek
[username] => Administrator
[fp_title] => Yeni Sitemiz
)
)
Type: Array
Last Query [17]: SELECT fc.id, fc.title AS fc_title, fc.username, fp.title AS fp_title
FROM forum_content fc
LEFT JOIN forum_polls fp ON fc.username = fp.username WHERE fc.username='Administrator'
Last Function Call: $db->query("SELECT fc.id, fc.title AS fc_title, fc.username, fp.title AS fp_title
FROM forum_content fc
LEFT JOIN forum_polls fp ON fc.username = fp.username WHERE fc.username='Administrator'")
Last Rows Returned: 4