【问题标题】:Query for getting values from multiple tables从多个表中获取值的查询
【发布时间】:2014-04-26 20:27:15
【问题描述】:

我有一个表 video 字段 videoidgenre(int-foreign key)language(int-foreign key ) 等。我想从 genre 表中获取 genre 的值,从 movie_languages 中获取 language 的值表。

表结构如下:

视频

类型

电影语言

如何加入这 3 个表格以获取与视频表格中每个视频相关的语言和流派。此外,当用户没有在表单中选择流派/语言时,值 0 将被插入到表中。这会影响查询吗?我正在使用 codeingiter,但我尝试使用以下查询但无法正常工作。

$this->db->select('video.*,movie_languages.language,genre.genre');    
$this->db->join('genre', 'video.genre = genre.id');
$this->db->join('movie_languages', 'video.language = movie_languages.id');
$query = $this->db->get();

请帮助我。

提前致谢。

【问题讨论】:

标签: php mysql codeigniter join


【解决方案1】:

试试这个

$this->db->select('video.*,movie_languages.language,genre.genre') 
         ->from('video')
         ->join('genre', 'video.genre = genre.id')
         ->join('movie_languages', 'video.language = movie_languages.id');
$query = $this->db->get();

【讨论】:

  • 感谢您的帮助。但是这个查询不会显示流派/语言为 0 的记录。
  • 可以添加where条件->where('genre',0)
  • @MohitJain 在这种情况下您需要左连接。看看我的回答
【解决方案2】:

会的,在这种情况下你需要一个左连接

试试这个

$query = $this->db
->select('v.*,ml.language,g.genre')
->from('video as v')
->join('movie_languages AS ml', 'v.language = ml.id', 'left outer')
->join('genre AS g', 'v.genre = g.id', 'left outer')
->get(); 

【讨论】:

    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多