如何通过mysql中的join语句从三个表中获取数据

时间:2010-10-02 06:31:28

标签: php codeigniter mysql

在我的应用程序中,我有三个表,预订患者 sub_unit ,我需要从预订表中选择 patient_id并在患者表中查询患者数据 同时 我需要从预订表中获取 sub_unit_id并从sub_unit查询sub_unit名称表 ...我需要将所有这些数据放入序列中的一个数组中 patient_id,sub_unit_name,patient_name,address并将其传递给Codeigniter表类以绘制表格。

如何在同一时间查询三个表来查询这些数据?你能帮助我吗?

4 个答案:

答案 0 :(得分:4)

使用代码点火器语法可以按如下方式完成 -

$this->db->select('r.patient_id, s.sub_unit_name, p.patient_name, p.address');
$this->db->from('reservation r');
$this->db->join('patient p', 'p.id = r.patient_id');
$this->db->join('sub_unit s', 's.id = r.sub_unit_id');
$query = $this->db->get();


You can check your formed query by -
echo $this->db->_compile_select();exit;

答案 1 :(得分:2)

join语法在SQL中非常简单。你可能正在寻找这样的东西:

SELECT   reservation.patient_id, 
         sub_unit.sub_unit_name, 
         patient.patient_name, 
         patient.address
FROM     reservation
JOIN     patient ON (patient.id = reservation.patient_id)
JOIN     sub_unit ON (sub_unit.id = reservation.sub_unit_id);

在MySQL中,默认联接是Inner Join,我认为这是你正在寻找的。您可能还想查看Outer Joins,它们也非常有用。

答案 2 :(得分:2)

Select r.patient_id, s.sub_unit_name, p.patient_name, p.address 
from reservation r, sub_unit s, patient p 
where r.patient_id = p.patient_id and r.sub_unit_id = s.sub_unit_id 

答案 3 :(得分:0)

它工作的人,我这样做使用Codeigniter活动记录,希望你们也可以使用它

    function get_data(){
    $sql = 'SELECT * FROM visit,patient,sub_unit WHERE visit.patient_patient_id = patient.patient_id AND visit.sub_unit_sub_unit_id = sub_unit.sub_unit_id';

    $this->db->order_by("reference_number", "desc");
    $query = $this->db->query($sql);
    return $query;
}

thanx获得所有支持!