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

Php mysql中如何通过join语句从三个表中获取数据,php,codeigniter,mysql,Php,Codeigniter,Mysql,在我的应用程序中,我有三个表,预约、患者和子单元,我需要从预约表中获取患者id,并查询患者表中的患者数据,同时我需要从预订表中获取子单元id,并从子单元表中查询子单元名称。。。我需要将所有这些数据按如下顺序放入一个数组中 patient_id、sub_unit_name、patient_name、address并将其传递给Codeigniter table类以绘制表格 如何同时查询三个表以查询出这些数据?你们能帮帮我吗?SQL的语法非常简单。您可能正在寻找类似以下内容: SELECT res

在我的应用程序中,我有三个表,预约患者子单元,我需要从预约表中获取患者id,并查询患者表中的患者数据同时我需要从预订表中获取子单元id,并从子单元表中查询子单元名称。。。我需要将所有这些数据按如下顺序放入一个数组中 patient_id、sub_unit_name、patient_name、address并将其传递给Codeigniter table类以绘制表格

如何同时查询三个表以查询出这些数据?你们能帮帮我吗?

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中,默认的连接是一个连接,我想这就是您要寻找的。你可能还想看看哪些是非常有用的。

伙计们,我用Codeigniter活动记录做到了这一点,希望你们也能使用它

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 
    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;
}

谢谢你的支持

使用代码点火器语法,可以按如下方式执行-

$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;

在该查询中使用的是非常旧的ANSI-89连接语法(也称为隐式连接),而不是更流行(和现代)的ANSI-92语法(也称为显式连接)。虽然大多数现代数据库将以相同的方式处理这两个变体,但通常建议不要使用旧语法。这是不容易理解的,因为您在
WHERE
子句中为每个连接添加了一个额外的表达式,而且忘记连接表达式也容易得多。非常感谢您的评论Daniel,,,我将对此进行研究!我只熟悉这种类型,这就是我使用它的原因!非常感谢您的回答,这比我找到的解决方案更熟悉!