简体   繁体   English

MySQLi内部联接无法正常工作

[英]MySQLi inner join not working properly

I have a query that select shows alongside with it's rating. 我有一个查询,它选择显示与它的评级。 But it will not work if there isn't any rates. 但是,如果没有任何费率,它将无法正常工作。 I want it to work even when it finds zero results on the rating table. 我希望它即使在评级表上发现零结果时也能正常工作。

My query is 我的查询是

$shows = $DB->query('SELECT
p.id, p.title, p.cover, p.summary, p.genre, p.year, 
ROUND(AVG(pr.rating), 1) AS rating_average
FROM shows p
INNER JOIN shows_ratings pr
ON pr.showid = p.id');

Change inner join with left join. 用左联接更改内部联接。

Explanation: You are trying to join two table on key which doesn't exist in other table, that's why you are not getting any result in inner join. 说明:您试图在另一个表中不存在的键上联接两个表,这就是为什么在内部联接中没有得到任何结果的原因。 Whereas left join will return rating as empty when key is not present in rating table. 当等级表中没有键时,左联接将把等级返回为空。

   $shows = $DB->query('SELECT
    p.id, p.title, p.cover, p.summary, p.genre, p.year, 
    ROUND(AVG(pr.rating), 1) AS rating_average
    FROM shows p
    LEFT JOIN shows_ratings pr
    ON pr.showid = p.id');

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

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