我经常在这个网站上找到答案,我通常会找到我想要的东西,但这一次非常特别,所以我发帖。
我正在处理我没有写过的代码,我希望有人详细解释一下以下查询的含义:
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中的老板和所有内部联接,并且不是很清楚(这是来自搜索引擎的查询。
如果有人可以提供帮助,非常感谢, 劳伦
答案 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个表中获取信息:
domir
,domir_photo
,但只有行Id_dormir_photo = Id_dormir
和communes
行,Commune_dormir = Id_commune
。他使用Type_dormir=3
过滤行,并将其与Id_dormir, Commune_dormir
分组,使其只有Id_dormir, Commune_dormir
的唯一行。
您的查询会计算行数,Id_dormir, Commune_dormir
和dormir_photo
中唯一的communes
和isset记录对。
我建议您阅读不同类型的JOIN
操作,尤其是INNER JOIN
(标准JOIN)和LEFT JOIN
,这些类型最适用。