左连接多行

时间:2013-01-02 09:07:08

标签: php mysql

我有这两个表:

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

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

1 个答案:

答案 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;