这个内连接查询究竟意味着什么?

时间:2013-12-13 07:01:51

标签: mysql

我经常在这个网站上找到答案,我通常会找到我想要的东西,但这一次非常特别,所以我发帖。

我正在处理我没有写过的代码,我希望有人详细解释一下以下查询的含义:

SELECT count(*) 
FROM ( SELECT Id_dormir 
       FROM (dormir INNER JOIN dormir_photo AS DP 
             ON Id_dormir = Id_dormir_photo) INNER JOIN communes as C ON 
             Commune_dormir = Id_commune  
       WHERE  Type_dormir=3 
       GROUP BY Id_dormir, Commune_dormir ) AS T

我不是mysql中的老板和所有内部联接,并且不是很清楚(这是来自搜索引擎的查询。

如果有人可以提供帮助,非常感谢, 劳伦

1 个答案:

答案 0 :(得分:1)

外部查询计算内部查询返回的行数:

SELECT Id_dormir FROM dormir
    INNER JOIN dormir_photo AS DP ON Id_dormir = Id_dormir_photo
    INNER JOIN communes as C ON Commune_dormir = Id_commune 
WHERE  Type_dormir=3 GROUP BY Id_dormir, Commune_dormir 

在此查询中,作者从3个表中获取信息: domirdomir_photo,但只有行Id_dormir_photo = Id_dormircommunes行,Commune_dormir = Id_commune。他使用Type_dormir=3过滤行,并将其与Id_dormir, Commune_dormir分组,使其只有Id_dormir, Commune_dormir的唯一行。

您的查询会计算行数,Id_dormir, Commune_dormirdormir_photo中唯一的communes和isset记录对。

我建议您阅读不同类型的JOIN操作,尤其是INNER JOIN(标准JOIN)和LEFT JOIN,这些类型最适用。