MySQL加入了两个SELECT结果

时间:2014-06-19 18:56:13

标签: mysql select join average

我有两个选择:

SELECT ID, ID_cat, modello 
FROM tbArticoli 
WHERE ID_cat=5 

Json中的示例结果:

{"ID":"5","ID_cat":"5","modello":"Hawaii"},
{"ID":"6","ID_cat":"5","modello":"T-Shirt Righe"},
{"ID":"7","ID_cat":"5","modello":"Polo"},
{"ID":"8","ID_cat":"5","modello":"Fantasia"},
{"ID":"9","ID_cat":"5","modello":"Fiori"},
{"ID":"10","ID_cat":"5","modello":"Arcobaleno"},
{"ID":"11","ID_cat":"5","modello":"Oro"},
{"ID":"12","ID_cat":"5","modello":"Argento"},
{"ID":"13","ID_cat":"5","modello":"StelleStrisce"}    

另一个选择:

SELECT IDModello, 
FLOOR(AVG(voto)) AS votomedio 
FROM tbCommenti 
GROUP BY IDModello

结果:

{"IDModello":"5","votomedio":"7"},
{"IDModello":"6","votomedio":"7"},
{"IDModello":"7","votomedio":"8"},
{"IDModello":"8","votomedio":"6"}

我需要这样的最终结果:

{"ID":"5","ID_cat":"5","modello":"Hawaii","votomedio":"7"},
{"ID":"6","ID_cat":"5","modello":"T-Shirt Righe","votomedio":"7"},
{"ID":"7","ID_cat":"5","modello":"Polo","votomedio":"8"},
{"ID":"8","ID_cat":"5","modello":"Fantasia","votomedio":"6"},
{"ID":"9","ID_cat":"5","modello":"Fiori","votomedio":"null"},
{"ID":"10","ID_cat":"5","modello":"Arcobaleno","votomedio":"null"},
{"ID":"11","ID_cat":"5","modello":"Oro","votomedio":"null"},
{"ID":"12","ID_cat":"5","modello":"Argento","votomedio":"null"},  
{"ID":"13","ID_cat":"5","modello":"StelleStrisce","votomedio":"null"}

on tbArticoli.ID = tbCommenti.IDModello

哪个是最好的查询?

谢谢。

1 个答案:

答案 0 :(得分:1)

假设您想加入id = idmodello,您可以执行类似

的操作
SELECT * 
FROM (SELECT ID, ID_cat, modello 
          FROM tbArticoli 
          WHERE ID_cat=5) AS tbA
LEFT JOIN (SELECT IDModello, 
          FLOOR(AVG(voto)) AS votomedio 
          FROM tbCommenti 
          GROUP BY IDModello) as tbC
ON tbA.ID = tbC.IDModello

您可以将子查询指定为您选择的内容,因为MySQL从一组元组中进行选择。表名只是指定您希望该表中的所有元组,而在上面的查询中,您指定了所需的特定元组。此查询中要注意的主要事项是必须使用“AS”关键字为每组元组指定临时名称。