我正在尝试组合两个表并获得如下所示的结果,但目前我没有得到我想要的输出
渴望输出
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代码获得不同的输出(不正确)
答案 0 :(得分:1)
你不能加入这两个表,因为所有字段都有相同的creater_id
,所以每个重量都可以有任何高度。
如果你想解决它,你有四种方法。
1 - 要区分它们,您应该使用每个相同输入的额外列same_id
。像
ON w.same_id = h.same_id
然后按此列加入表。 HERE example
2 - 使uweight_id和height_id相同,然后按这两列连接表。
ON w.uweight_id = h.height_id
3 - 这个方法我不推荐它,我不建议它,因为在更新表时并非所有情况都是如此。是使用CROSS JOIN
。
4 - 只制作一张高度和重量相同的表格,然后通过id(更简单)达到。