我有这两个表:
sections - {id,title,description}
topics - {id,section_id,topictitle}
每个部分在主题表中都有多个主题。
阅读并尝试后我发现使用左连接是正确的方法
$sql = 'select * from sections left join topics on sections.id=topics.sections_id';
$query = mysql_query($sql);
$section = array();
$i=0;
while ($sections = mysql_fetch_assoc($query)) {
$sl = array(
'title' => $sections['title'],
'topics'=> $sections['topictitle'],
);
$section[$i++] = $sl;
}
这是查看所有部分和主题的正确代码吗?
答案 0 :(得分:1)
您正在从sections
进行选择并加入topics
,因此您只会获得一个链接到每个部分的主题,如果您有多个主题链接到一个部分(我是认为你有。)
反之亦然 - 从topics
中选择并加入sections
:
select * from topics left join sections on sections.id=topics.section_id
请注意,如果您有一个没有链接主题的部分,您将无法在结果集中获得该部分。如果你想要,那么首先选择这些部分是值得的。
此外,您可以直接推送到数组 - 而不是像这样递增 - 您不需要手动管理索引:
// $section[$i++] = $sl; // <-- your way
$section[] = $sl;