MySQL连接表具有相同的ID冲突: 这是我的查询
$this->db->select();
$this->db->from('manual');
$this->db->join('contact', 'contact.id = manual.contact_id');
$this->db->where('people_id',$practicien);
$this->db->where('DATE(day)', $datee);
$this->db->order_by('TIME(startTime)', 'ASC');
$query = $this->db->get();
我需要访问id
表中的manual
列
但当我使用'id'时,我从id
表中获得了contact
列的值。
请修正此错误。
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以将表格名称放在字段之前:
Select manual.id, * from ...
答案 2 :(得分:0)
添加or die (__LINE__." ".mysqli_error($con))
以查看错误消息
$con
将是这样的$con=mysqli_connect("localhost","root")
...
或使用or die (__LINE__." ".mysql_error())
查看错误消息,如果你使用mysql
答案 3 :(得分:0)
使用*
有问题。其中一个问题是列在不同的表中具有相同的名称。
这可能会解决您的问题:
select manual.id as manual_id, contact.*
. . .
如果您需要manual
表中的更多列,只需添加它们即可。通过使用列别名,可以删除名称冲突问题。
作为一个注释,当您使用using
子句时,SQL提供了另一种解决此问题的机制。但是,只有在外键引用和主键具有相同名称时才能执行此操作。事实上,这是为两个相互引用的列使用相同名称的一个很好的理由。如果您这样做,您的查询可能如下所示:
SELECT *
FROM manual m JOIN
contact c
USING (contact_id)
WHERE people_id = '18' AND
DATE(day) = '2014-03-13'
ORDER BY TIME(startTime) ASC;
您不会发生名称冲突,只会返回一个id
列。
答案 4 :(得分:0)
由于manual.id
将是数组中的第一列,您可以这样做 -
$query = $this->db->get();
$row = $query->result_array();
return $row[0];
参考 - https://www.codeigniter.com/user_guide/database/results.html
或者您可以使用别名
将其添加到select()
$this->db->select('manual.id AS `yourid`, *', false);
参考 - https://www.codeigniter.com/user_guide/database/query_builder.html#selecting-data
答案 5 :(得分:0)
$this->db->select("manual.id as manual_id");
$this->db->from('manual as manual');
$this->db->join('contact as contact', 'contact.id = manual.contact_id');
$this->db->where('people_id', $practicien);
$this->db->where('DATE(day)', $datee);
$this->db->order_by('TIME(startTime)', 'ASC');
$query = $this->db->get();
答案 6 :(得分:0)
SKG回答帮助我实现了输出: 这是最终的代码。
$this->db->select('manual.id as rdvid, startTime, endTime, day, firstname, lastname');
$this->db->from('manual');
$this->db->join('contact', 'contact.id = manual.contact_id');
$this->db->where('people_id',$practicien);
$this->db->where('DATE(day)', $datee);
$this->db->order_by('TIME(startTime)', 'ASC');
$query = $this->db->get();
//print_r($this->db->last_query());
return $query;