繁体   English   中英

是否可以在单个查询中将多对多关系与一对多关系组合?

[英]Is it possible to combine many-to-many relationships with one-to-many relationships in a single query?

我有一个MOVIE表,其中包括与一个类型的多对多关系,以及一个具有一对多关系的评论表。 又名电影可以有很多类型,电影可以有很多类型。 电影可以有很多评论。

我的问题是,当我尝试显示数据库中的所有数据时,我想显示标题,关联的流派以及所有评论。 我似乎不能仅通过查询来执行此操作,所以我开始添加自己的逻辑,但这对我也不起作用。 我一直在想,必须有某种方法可以将逻辑组合到一个查询中。

这是我到目前为止的内容:

$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星大电影

这部电影永远不会老

冒险

几天后阅读时我找到了答案。 我了解了联接,并意识到它们正是我想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM