Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何对此查询进行内部联接_Mysql_Sql_Inner Join - Fatal编程技术网

Mysql 如何对此查询进行内部联接

Mysql 如何对此查询进行内部联接,mysql,sql,inner-join,Mysql,Sql,Inner Join,我有一个疑问: SELECT hit.timestamp,hit.id,config.Name,hit.meter_id,levels.LevelName, pos.sm_pos , hit.hit_value FROM pos,hit,controllers,levels,config WHERE hit.id=config.id AND hit.meter_id=levels.id AND pos.id=hit.id AND pos.controller_id=controllers.

我有一个疑问:

SELECT hit.timestamp,hit.id,config.Name,hit.meter_id,levels.LevelName, pos.sm_pos , hit.hit_value 
FROM pos,hit,controllers,levels,config 
WHERE hit.id=config.id
AND hit.meter_id=levels.id 
AND pos.id=hit.id
AND pos.controller_id=controllers.id;

如何从中进行内部联接查询?用化名什么的?我正在查找,但找不到任何可用于多表查询的内容。

您连接表的方式现在已经过时。以前使用它,现在我们使用
INNER/NATURAL/LEFT-OUTER/RIGHT-OUTER/CROSS
等关键字根据需求连接表

注意:您发布的查询符合SQL-89标准,我发布的第二个查询符合SQL-92标准。

SQL-92标准引入了
内部联接。。在
外部连接上。。在
上,以替换SQL-89更复杂的(?)语法。

现在连接表的方式已经过时。以前使用它,现在我们使用
INNER/NATURAL/LEFT-OUTER/RIGHT-OUTER/CROSS
等关键字根据需求连接表

注意:您发布的查询符合SQL-89标准,我发布的第二个查询符合SQL-92标准。

SQL-92标准引入了
内部联接。。在
外部连接上。。在
上,以替换SQL-89更复杂的(?)语法。

如果要重新格式化查询,可以按如下方式执行:

SELECT 
    H.timestamp,
    H.id,
    F.Name,
    H.meter_id,
    L.LevelName, 
    P.sm_pos, 
    H.hit_value 
FROM pos AS P
INNER JOIN controllers AS C ON P.controller_id = C.id
INNER JOIN hit AS H ON P.id = H.id
INNER JOIN levels AS L ON H.meter_id = L.id
INNER JOIN config AS F ON H.id =F.id;
请注意,我已经在表名上添加了别名,这可以大大简化查询


要了解连接在MySQL中的工作方式,请阅读相关内容。Jeff Atwood编写了一本关于连接的好教程,您可以找到它。

如果您想重新格式化查询,可以这样做:

SELECT 
    H.timestamp,
    H.id,
    F.Name,
    H.meter_id,
    L.LevelName, 
    P.sm_pos, 
    H.hit_value 
FROM pos AS P
INNER JOIN controllers AS C ON P.controller_id = C.id
INNER JOIN hit AS H ON P.id = H.id
INNER JOIN levels AS L ON H.meter_id = L.id
INNER JOIN config AS F ON H.id =F.id;
请注意,我已经在表名上添加了别名,这可以大大简化查询


要了解连接在MySQL中的工作方式,请阅读相关内容。杰夫·阿特伍德(Jeff Atwood)编写了一本关于连接的好教程,你可以找到它。

了解。了解。还有一个问题。您的代码在mysql中工作正常。但当我在php中尝试时,我得到一个错误,除了第一列之外,每列中都有未定义的索引。因此,第一个失败了,而其他的失败了。有什么想法吗?我把它作为一个问题贴在stackoverflow上,所以人们正在研究另一个问题。您的代码在mysql中工作正常。但当我在php中尝试时,我得到一个错误,除了第一列之外,每列中都有未定义的索引。因此,第一个失败了,而其他的失败了。知道吗?我把它作为问题贴在stackoverflow上了,所以大家都在研究它