【问题标题】:Using JOIN to select multiple tables使用 JOIN 选择多个表
【发布时间】:2014-02-11 15:08:50
【问题描述】:

我有 3 张桌子,但现在我只担心其中 2 张。我想从两个表中选择所有条目。我相信这就是 JOIN 语句的用途。我的表格是“公司”和“个人信息”。 Companies 是父表,CompanyName 是主键,Personal Info 表具有 Company_id 的外键索引。将两者结合为一个查询的语句是什么?

【问题讨论】:

  • 您当前的查询是什么?在寻求帮助之前至少尝试一下通常是有益的。
  • $stmt3 = $DB->prepare('SELECT * FROM Companies LEFT JOIN personalInfo USING (CompanyName)');

标签: mysql sql pdo


【解决方案1】:

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

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

内部联接的性质将排除 Companies 中没有任何相关 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

【讨论】:

  • 这可行,但它显示公司名称两次有没有办法摆脱公司名称?
  • 我更新了我的答案,希望这能让你更接近你所寻找的。​​span>
【解决方案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'); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 2012-11-08
    • 2015-03-21
    • 1970-01-01
    • 2021-02-09
    • 2015-02-27
    • 2016-08-04
    • 2011-12-10
    相关资源
    最近更新 更多