【问题标题】:Codeigniter Joining 4 TablesCodeigniter 连接 4 个表
【发布时间】:2014-10-27 10:13:33
【问题描述】:

我卡在生成用于连接表的 SQL 语句。

基本上我有 4 张桌子。并且有 2 个带有外键的表。表序列连接到产品表和区域表。并且分布表连接到序列表。

餐桌用品。

标识 | product_desc

表格区域。

标识 | region_desc

表格序列。

标识 |产品编号 | region_id

表分布

标识 |序列号 |销售 |分发费用

我的模型代码:

$this->db->select('*');
$this->db->from('distributions'); 
$this->db->join('sequence', 'sequence.id = distributions.sequence_id', 'left');
$this->db->join('sequence', 'sequence.product_id=products.product_no'); //Generates Error
$this->db->join('sequence', 'sequence.region_id=regions.id'); // Generates Error
$this->db->order_by('distributions.id','asc');         
$query = $this->db->get(); 
if($query->num_rows() != 0){
   return $query->result_array();
} else {    
  return false;
}

有什么解决办法吗?将不胜感激。

提前致谢。

【问题讨论】:

  • 您没有加入产品或地区表,但您正在引用它们
  • 引用它们是什么意思?序列表是产品在一个地区交付的序列。
  • 写不好回复
  • 序列表的样本记录..prntscr.com/507qh3

标签: php mysql sql-server codeigniter


【解决方案1】:

您没有引用 regionsproducts

试试这样的:

$this->db->select('*');
$this->db->from('distributions'); 
$this->db->join('sequence', 'sequence.id = distributions.sequence_id', 'left');
$this->db->join('products', 'sequence.product_id=products.product_no');
$this->db->join('regions', 'sequence.region_id=regions.id');
$this->db->order_by('distributions.id','asc');         
$query = $this->db->get(); 
if($query->num_rows() != 0){
   return $query->result_array();
} else {    
   return false;
}

【讨论】:

  • 哇哦!我从没想过会这么容易!哈哈 。它按我的预期工作!谢谢!
  • @JeffreyBugahod 没问题。当您进行联接时,您引用的所有表都必须在查询中
  • 非常感谢!你救了我!
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多