0

我有这两张表:

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;
}

这是查看所有部分和主题的正确代码吗?

4

1 回答 1

1

您正在选择sections并加入topics,因此您只会将一个主题链接到每个部分,如果您有多个主题链接到一个部分(我认为您有),它将不起作用。

反过来做 - 选择topics并加入sections

select * from topics left join sections on sections.id=topics.section_id

请记住,如果您有一个没有链接主题的部分,您将不会在结果集中获得该部分。如果你想要,那么首先选择这些部分是值得的。

此外,您可以直接推送到数组,而不是像那样递增 - 您不需要手动管理索引:

// $section[$i++] = $sl;  // <-- your way

$section[] = $sl;
于 2013-01-02T09:31:53.093 回答