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