我有两张桌子
Table 1 (keywordsTbl)
KeyID Key_Name
================================
1 Biology
2 Entertainment
Table 2 (profileTbl)
Keyword_ID Key_Name
================================
1(from keywordsTbl) Biology(from keywordsTbl)
2(from keywordsTbl) Entertainment(from keywordsTbl)
我在profileTbl中的查询正在从keywordTbl索引KeyID及其工作正常。唯一的问题是我的输出像这样显示(无数组)。 :
好像它仅索引第一个keyID ...即使在行中放置了多个keyID,结果也只显示1个单个关键字:
我的查询看起来像这样:
include 'db.php';
$sql = mysqli_query($con,"SELECT * FROM profileTable, addKeywordTable ORDER BY LaName ASC");
while ($row = mysqli_fetch_array($sql))
{
$fname = $row['FirName'];
$lname = $row['LaName'];
$title = $row['Title'];
$keys = $row['Keyword_Name'];
$id = $row['source_ID'];
if(!in_array($title,array('',null)) && !empty($title)):
$title = '('.$title.')';
else:
$title = '';
endif;
使用两个表时显示数组的最简单方法是什么?在这种情况下,联接会更好吗?
最佳答案
我不是100%地确定这就是您要的内容,但是如果您想要基于KeyID
联接的结果列表,可以执行以下操作:
SELECT p.Laname, p.FiName, GROUP_CONCAT(k.Key_Name)
FROM ProfileTable AS p
JOIN addKeywordTable AS k ON k.KeyID = p.Keyword_ID
GROUP BY p.LaName, p.FiName
如果要在选择列表中包括更多文件,则需要将它们添加到
GROUP BY
列表中,或在选择列表中对它们使用聚合函数(GROUP_CONCAT
,MAX
,MIN
等)。