【问题标题】:getting data from 2 different table with JOIN sql. Codeigniter使用 JOIN sql 从 2 个不同的表中获取数据。代码点火器
【发布时间】:2009-07-24 18:36:41
【问题描述】:

我使用 codeigniter,我需要从 2 个不同的表中获取数据。目前它仅从works_image 表中返回数据。如何从两个表中获取数据?

非常感谢!!

$this->db->select('works_image.*', 'works.*'); $this->db->from('works_image', 'works'); $this->db->join('works', 'works.id =works_image.id_work'); $result = $this->db->get(); foreach ($result->result() as $row) { 回声“#”。 $row->id 。 “——”。 $行->拇指。 “——”。 $row->wname 。 "
"; }

【问题讨论】:

标签: sql codeigniter join


【解决方案1】:

只要您正在执行SELECT * (Why is this a bad idea?),您就不需要在调用select() 时指定表。它会默认选择所有字段。

$this->db->from('works_image', 'works');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

应该可以正常工作。

相反,您真正应该做的是准确指定您需要哪些字段:

$this->db->select('works_image.id, works_image.name, works_image.id_work, works.id, works.name'); // (or whichever fields you're interested in)
$this->db->from('works_image', 'works');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

通过这种方式,您可以确保 (a) 您不会从数据库中提取不必要的数据,并且 (b) 如果/当您修改数据库架构时,您的代码不会中断。

【讨论】:

  • 感谢您的建议 :) 我使用 .* 因为我已经只有几个参数了。他们不是大桌子。还是您认为无论表格多么小,我都应该准确指定我需要哪些字段?
  • 无论表格大小如何,准确指定您需要的字段总是一个好主意。
【解决方案2】:

这篇文章应该回答你的问题:http://www.whypad.com/posts/codeigniter-activerecord-join-tip/178/

简而言之,你需要从

重写你的select语句
$this->db->select('works_image.*', 'works.*');

到这里:

$this->db->select('works_image.*, works.*');

请注意,这是 Google 上“CodeIgniter join”的第一个结果。先尝试谷歌搜索你的问题。您通常可以获得更快的答案:)

【讨论】:

  • 我实际上已经在谷歌搜索了几个小时:/ 以找到一个快速的解决方案,但我没有注意到''点:/ 让我瞎了眼!它现在工作得很好!!!谢谢! :)
【解决方案3】:

你应该写下面的代码

$this->db->select('works_image.*', 'works.*');
$this->db->from('works_image');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

foreach ($result->result() as $row) {
echo " # " . $row->id . " - " . $row->thumb . " - " . $row->wname . "
";
} 

我认为你得到了你的结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2013-10-23
    • 2017-09-05
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多