2014-01-21 36 views
0

我有3个表格,但现在我只担心其中2个。我想选择两个表中的所有条目。我相信这是JOIN声明的目的。我的表格是“公司”和“个人信息”。公司是以CompanyName为主键的个人表,个人信息表的外键索引为Company_id。声明是什么将这两者作为一个单一的查询加入?使用JOIN选择多个表格

+0

您当前的查询是什么?在寻求帮助之前至少尝试一些东西通常是有益的。 – enderland

+1

$ stmt3 = $ DB-> prepare('SELECT * FROM companies LEFT JOIN personalInfo USING(CompanyName)'); – Yamaha32088

回答

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 
+0

这个工作,但它显示公司名称两次是否有办法摆脱公司名称? – Yamaha32088

+0

我更新了我的答案,希望这能让你更接近你的期望。 – sean

+0

是的,你的男人 – Yamaha32088

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');