-1

我正在尝试组合两个表并得到如下所示的结果,但目前我没有得到我想要的输出

期望的输出

  weight_pounds    height_cm 
     121.25           130
     132.28           160
     154.32           221
     176.37           434

我有两张桌子,每张桌子上都有一个 foreign_key 列creater_id

user_weight 表 在此处输入图像描述

user_height 表 在此处输入图像描述

我试过这个功能,但它显示错误的输出:

function get_all_user_bmi($uid) 
{ 
  $this->load->database(); 
  $this->db->select('w.weight_pounds, h.height_cm');
  $this->db->from('user_weight w');
  $this->db->join('user_height h' ,'w.creater_id = h.creater_id');
  $this->db->where('w.creater_id',$uid); 
  $this->db->where('h.creater_id',$uid); 

  $this->db->group_by(array('h.height_id')); 
  $this->db->order_by('w.uweight_id', 'ASC')->order_by('h.height_id', 'ASC'); 
   //$this->db->group_by('h.height_id','w.uweight_id'); 
  $this->db->distinct();
  $res = $this->db->get(); 
    $ret = array(); 
     foreach ($res->result_array() as $row) {
    $weight=$row['weight_pounds']* 4.88;
    $height=($row['height_cm']*0.032808)*($row['height_cm']*0.032808);  
    $bmi=$weight/$height;
    $ret[] = $bmi;  //final bmi formuala calculated

}
 print($this->db->last_query());
    return $ret;
}  

通过执行上面的 php 代码获得不同的输出(不正确)

在此处输入图像描述

4

1 回答 1

1

你不能加入这两个表,因为所有字段都相同creater_id,所以每个重量都可以有任何高度。

如果你想解决它,你有四种方法。

1 - 要区分它们,您应该使用same_id每个相同输入的额外列。喜欢

  ON  w.same_id = h.same_id

然后按此列加入表格。这里的例子

2 - 使 uweight_id 和 height_id 相同,然后通过这两列连接表。

    ON w.uweight_id = h.height_id

3 - 这种方法我不推荐它,我也不建议它,因为它在更新表格时并非在所有情况下都是正确的。是使用CROSS JOIN.

4 - 只制作一张具有高度和重量的桌子,然后通过 id 到达(更简单)。

于 2013-09-14T18:34:15.267 回答