使用JOIN选择多个表

时间:2014-01-21 20:07:21

标签: mysql sql pdo

我有3张桌子但是现在我只担心其中的两张桌子。我想从两个表中选择所有条目。我相信这是JOIN声明的用途。我的表是“公司”和“个人信息”。公司是父表,其中CompanyName是主键,而个人信息表具有Company_id的外键索引。该声明将两者合并为一个单一查询是什么意思?

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,这就是你可能需要的:

$stmt3 = $DB->prepare('select c.field1,c.fieldn,p.fielda,p.fieldx from companies c inner join personal_info p on c.id=p.companies_id'); 

答案 1 :(得分:2)

我不是100%肯定你的架构,但这是你正在寻找的最简单的形式:

SELECT * 
FROM Companies C
INNER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id

内部联接的性质将排除没有任何相关PersonalInfo行的公司中的行。如果您想获得所有公司,那么您将使用LEFT OUTER JOIN:

SELECT * 
FROM Companies C
LEFT OUTER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id

在连接中选择*时,它将返回两个表中的所有行。您可以通过在选择中指定列来选择要显示的列:

SELECT C.CompanyName, PI.ColName1, PI.ColName2
FROM Companies C
LEFT OUTER JOIN PersonalInfo PI ON C.Company_id = PI.Company_id