如何使用外键从三个表中选择所有数据

时间:2016-01-10 05:42:51

标签: php mysql

您好我正在尝试使用外键从三个表中选择所有数据。我尝试了类似的东西

$getId = $_GET['id'];

$getAll="SELECT * FROM employee_info ,over_view, employee_attendance
WHERE employee_info.id=$getId AND id=over_view.id AND id=employee_info.id";
$info_data = $dbcon->query($getAll);
$store = $info_data->fetch(PDO::FETCH_ASSOC);
echo $store['first_name'];

but it shows that error作为一个新手我发现很难解决。 现在我如何从三个表over_view和employee_attendance表中选择一个查询的所有数据id是employee_info的外键。

2 个答案:

答案 0 :(得分:1)

我认为您需要在WHERE子句中限定列名,如下所示

SELECT * 
  FROM employee_info
      ,over_view
      ,employee_attendance
 WHERE employee_info.id = $getId
   AND employee_info.id = over_view.id
   AND employee_attendance.id = employee_info.id

答案 1 :(得分:1)

确定。首先:您正在使用隐式连接结构进行查询,而您应该使用显式连接结构。 其次,你得到的错误是因为你在其中一个表中有多个列id,而MySql需要知道要考虑什么。使用显式连接语法更容易看到:

SELECT * 
    FROM employee_info
    JOIN over_view ON employee_info.id=over_view.id
    JOIN employee_attendance ON employee_info.id=employee_attendance.id
    WHERE employee_info.id = $getId

使用显式连接,您可以使用表格之间可以创建的所有类型连接的所有功能:左,右,内...一个易于阅读的连接指南是here