0

私はこれらの2つのテーブルを持っています:

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ているので、各セクションにリンクされているトピックは1つだけです。複数のトピックが、1つのセクションにリンクされている場合は機能しません(私はあなたが持っていると思います)。

逆にそれを行います-から選択し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 に答える