MySQL内连接,从多个表中选择

时间:2014-02-11 12:13:53

标签: php mysql inner-join

我真的很想弄清楚这一点。我正在尝试从多个表中运行SELECT查询。

到目前为止,这是我无法正常工作的;

SELECT jira_issues.*, session_set.* FROM jira_issues, session_set
INNER JOIN reports on jira_issues.report_id = reports.id 
    WHERE jira_issues.report_id = 648

我有其他表(session_set,report_device),它们分别有一个ReportID和report_id列。

我有一个包含主键id的报告表。在其他表中,report.id键与外键链接。

最终我想要实现的是: 我在报告表中有一个ID为648的条目。在其他表(jira_issues,report_device,session_set)中,我还有一个条目,其中有一个外键链接到报告表中的报告ID。

我想运行一个SELECT查询来查询表(jira_issues,report_device和session_set),并根据report.id获取它们的所有数据。

谢谢!

3 个答案:

答案 0 :(得分:3)

这个怎么样:

SELECT * FROM jira_issues ji
    LEFT JOIN session_set ss ON ji.report_id = ss.ReportID
    LEFT JOIN report_device rd ON rd.report_id = ji.report_id
WHERE ji.report_id = 648;

答案 1 :(得分:0)

from子句中对逗号说“不”。始终使用明确的join语法:

SELECT ji.*, session_set.*
FROM jira_issues ji inner join
     reports r
     on ji.report_id = r.id  inner join
     session_set ss
     on ss.ReportId = r.report_id
WHERE ji.report_id = 648;

如果某些表可能没有相应的行,您可能需要left outer join而不是inner join

答案 2 :(得分:0)

请试试这个。您可能会收到语法错误。

选择a。,b。 FROM jira_issues a,session_set b,报告c 其中a.report_id = c.id和b.report_id = c.id AND a.report_id = 648