2015-05-23 58 views
0

我有一个MOVIE表,其中包含与流派的多对多关系以及具有一对多关系的评论表。 AKA,一部电影可以有很多流派,一个流派可以有很多电影。电影可以有很多评论。在单个查询中是否可以将多对多关系与一对多关系结合使用?

我的问题是,因为我试图显示数据库中的所有数据,我想显示标题,相关流派,然后是所有评论。我似乎无法仅仅通过查询来做到这一点,所以我开始添加自己的逻辑,但这对我也不起作用。我一直在想,必须有某种方法将逻辑合并为一个查询。

这是我到目前为止有:

$query2 = "SELECT * FROM movie m 
JOIN moviegenre mg ON m.id = mg.movieid 
JOIN genre g ON g.id = mg.genreid 
JOIN review r ON r.movieid = m.id 
WHERE m.id = mg.movieid"; 

$title = "starting"; 
$display = true; 
foreach ($db->query($query2) as $row2) 
{ 
    if ($title != $row2['title']) 
    { 
     $title = $row2['title']; 
     echo '<h2 id="title">' . $row2['title'] . " (" . $row2['year'] 
      . ')<br/><hr/></h2><h4> <u>- Genres - </u><br/>'; 
     $display = false; 
    } 
    echo $row2['name'] . ' <br/> '; 

    if ($display == false) 
    { 
     $display = true; 
     echo "<h4 id=\"rating\">" . $row2['rating'] . " stars<br/> " . $row2['subject'] . "<br/>" . "<h5 id=\"rating\">" . $row2['content'] . "</h5></h4>"; 
    } 
} 
echo '</h4>'; 

这里是结果。请注意,它只能包含一个评论,格式非常难看。我知道这是非常难看的代码,它只是我试图用迂回的方式修复错误。夺宝的

攻略(1981)

  • 流派 - 行动 5星 伟大的电影

这部电影永远不会过时

冒险

回答

0

我发现几天后阅读答案。我了解到了连接,并意识到他们正是我所期待的。