【发布时间】:2022-10-07 01:33:15
【问题描述】:
我一直在建立一个爱好项目,我想写关于电影、系列、动漫、故事等的摘要。我想将 4 个表连接到 1 个主表,但我遇到了一个问题。我得到空值。在我的数据库中,数据是存在的。但我无法弄清楚我的查询有什么问题。
概念如下。有一个界面可以记录数据。提交表单后,控制器决定记录的内容。它在主表中保存已保存的内容(动画、电影等)并增加自动增量值。然后它将主表的标识符和其他数据(描述、标题、图像等)存储在其中一个子表中。这很好用。然后想把这4个子表的内容罗列出来,这里就遇到了问题。
这是我的查询: 函数获取内容() {
$this->db->select(\'*\');
$this->db->from(\'contents\');
$this->db->join(\'films\', \'films.content_id = contents.global_content_id\', \'left\');
$this->db->join(\'series\', \'series.content_id = contents.global_content_id\', \'left\');
$this->db->join(\'tales\', \'tales.content_id = contents.global_content_id\', \'left\');
$this->db->join(\'animes\', \'animes.content_id = contents.global_content_id\', \'left\');
$query = $this->db->get();
if ($query->num_rows()>0) return $query->result_array();
}
这就是我回来的:
Array
(
[0] => Array
(
[global_content_id] => 2
[content_main_category] => film
[id] =>
[title] =>
[description] =>
[short_description] =>
[category_id] =>
[picture_path] =>
[running_time] =>
[director] =>
[release_date] =>
[language] =>
[actors] =>
[main_category_id] =>
[uploader_id] =>
[upload_time] =>
[link] =>
[status] =>
[content_id] =>
[subtitle_status] =>
[subtitle_language] =>
)
[1] => Array
(
[global_content_id] => 3
[content_main_category] => film
[id] =>
[title] =>
[description] =>
[short_description] =>
[category_id] =>
[picture_path] =>
[running_time] =>
[director] =>
[release_date] =>
[language] =>
[actors] =>
[main_category_id] =>
[uploader_id] =>
[upload_time] =>
[link] =>
[status] =>
[content_id] =>
[subtitle_status] =>
[subtitle_language] =>
)
-
如果你加入 2 或 3 或 4 或 5 没关系,他们一遍又一遍地遵循相同的原则,所以从主和一个子开始,看看你是否管理(因为这是无数的例子,可以找到并采取下一个
-
感谢你的回答。我修改了问题。我附上了代码和最终结果。我尝试了 3-4 个小时,但没有成功。 :/
-
你应该从内部连接开始,就像我说的那样,只从一个开始,看看你是否得到你的结果,然后慢慢来看看dofactory.com/sql/join,这样你就可以了解连接的实际工作方式。
-
一切都是空的,意味着只有加入例如
films.content_id = contents.global_content_id没有找到任何匹配。 bur 因为我们对你的设计一无所知,所以我们也帮不了你 -
应该预期会有空白。如果 Content 与每个其他表具有一对多的关系,则包含 all 的查询可能不是您想要的。如果 Content 与其他每个表具有 1 对 1 的关系,那么这 4 个表应该是一个与另一个类别字段的表。否则,UNION 查询 4 个表并将该查询连接到 Content。
标签: php sql database join null