Php MySQL内部联接,从多个表中选择

Php MySQL内部联接,从多个表中选择,php,mysql,inner-join,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\u set、report\u device)

我真的很难理解这件事。我正在尝试从多个表运行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\u set、report\u device),它们分别有ReportID和report\u id列

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

最终,我要实现的目标是: 我在reports表中有一个id为648的条目。在其他表(jira_问题、报告_设备、会话_集)中,我还有一些条目,它们的外键链接到报告表中的报告id

我想运行一个SELECT查询来查询表(jira_问题、report_设备和session_集),并根据report.id从表中获取所有数据

谢谢

只要对
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;
如果某些表可能没有对应的行,您可能希望使用
左外部联接
而不是
内部联接

只需对
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;
如果某些表可能没有对应的行,您可能希望使用
左外部联接
而不是
内部联接

只需对
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;
如果某些表可能没有对应的行,您可能希望使用
左外部联接
而不是
内部联接

只需对
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;
如果某些表可能没有对应的行,您可能希望使用
左外部联接
而不是
内部联接

如何:

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;
那么这个呢:

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;
那么这个呢:

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;
那么这个呢:

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;

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

选择a,b。来自jira_问题a,会话集b,报告c
如果a.report\u id=c.id,b.report\u id=c.id,a.report\u id=648,请尝试一下。您可能会遇到语法错误

选择a,b。来自jira_问题a,会话集b,报告c
如果a.report\u id=c.id,b.report\u id=c.id,a.report\u id=648,请尝试一下。您可能会遇到语法错误

选择a,b。来自jira_问题a,会话集b,报告c
如果a.report\u id=c.id,b.report\u id=c.id,a.report\u id=648,请尝试一下。您可能会遇到语法错误

选择a,b。来自jira_问题a,会话集b,报告c

其中a.report\u id=c.id和b.report\u id=c.id和a.report\u id=648

作为最佳实践:使用一种连接类型-ANSI样式(即,
join foo ON..
您同时使用ANSI样式和theta样式(即FROM子句中逗号分隔的表格)。作为最佳实践:使用一种连接类型-ANSI样式(即,
JOIN-foo-ON..
您同时使用ANSI样式和θ样式(即FROM子句中逗号分隔的表格)。最佳做法是:使用一种类型的连接-ANSI样式(即,
JOIN-foo-ON..
您同时使用ANSI样式和θ样式(即FROM子句中逗号分隔的表格)。作为最佳实践:使用一种类型的联接-ANSI样式(即,
join foo ON..
您同时使用ANSI样式和θ样式(即FROM子句中逗号分隔的表格).Ah super!如果我想限制每个表中的列,该怎么办?例如,我只需要jira_issues表中的issue_id和issue_key,以及report_device表中的设备名称。谢谢!只需在SELECT中指定列名,而不是使用SELECT*。例如,选择ji.issue_id,ji.issue_key。谢谢,还有一件事!什么t如果我也想从报告表中选择数据?您可以轻松地将联接留在另一个表上,而不是
select*
,只需使用
select ji.field1,rd.field2
从表
jira_问题
field2
从表
report_设备
中选择
field1
。啊,太好了!如果我想这样做呢限制每个表中的列数?例如,我只需要jira_issues表中的issue_id和issue_key以及report_device表中的device_名称。谢谢!只需在SELECT中指定列名,而不是使用SELECT*。例如SELECT ji.issue_id,ji.issue_key。谢谢,还有一件事!如果我想选择da呢也可以从Reports表中选择ta?您可以轻松地将JOIN留在另一个表中,而不是
SELECT*
,只需使用
SELECT ji.field1,rd.field2
从table
jira_issues
field2
从table
report_device
中选择
field1
。啊,太好了!如果我想限制每个表中的列呢例如,我只需要jira_issues表中的issue_id和issue_key,以及report_device表中的device_name。谢谢!只需在SELECT中指定列名,而不是使用SELECT*。例如SELECT ji.issue_id,ji.issue_key。谢谢,还有一件事!如果我也想从Reports表中选择数据,该怎么办?您可以轻松地将JOIN留在另一个表上,而不是使用
SELECT*
,只需使用
SELECT ji.field1,rd.field2
从表
jira\u issues
和表
report\u device
中选择
field1
。啊,太好了!如果我想限制每个表中的列呢?例如,I o只需要jira_issues表中的issue_id和issue_key,以及report_device表中的device_name。谢谢!只需在SELECT中指定列名,而不是使用SELECT*。例如,选择ji.issue_id,ji.issue_key。谢谢,还有一件事!如果我也想从Reports表中选择数据呢?您可以让JOIN保持打开状态