繁体   English   中英

查询左连接取数据问题-Mysql

[英]Query left join fetch data problem - Mysql

我用左连接连接了两个表。 当我用 Select 全选时,所有行都来了 (query1)。 但是当我用 select 拉一些行时,我只加载了一个数据,而不是加载了图 1 中的所有数据。 是什么原因?

查询1 查询2

加载所有数据查询1

查询1:

SELECT * 
FROM oc_review AS OYLAMA 
JOIN oc_product AS PRODUCT 
    ON (PRODUCT.product_id = OYLAMA.product_id)
INNER JOIN oc_product_to_category AS KATEGORI 
    ON (KATEGORI.product_id = PRODUCT.product_id) 
WHERE KATEGORI.category_id = 69

仅加载 1 个数据查询 2

查询2:

SELECT
    AVG(ALL OYLAMA.rating) AS ORTALAMA,
    COUNT(OYLAMA.rating) AS TOPLAMOY 
FROM oc_review AS OYLAMA 
JOIN oc_product AS PRODUCT
    ON (PRODUCT.product_id = OYLAMA.product_id) 
INNER JOIN oc_product_to_category AS KATEGORI
    ON (KATEGORI.product_id = PRODUCT.product_id) 
WHERE KATEGORI.category_id = 69

一旦您引入诸如AVG()COUNT()类的聚合函数,MySQL 就会创建一个单独的组,其中所有记录都放在其中。 另请参阅没有 GROUP BY 子句的 MySQL 聚合函数问题以获取更多信息。

您可能想要做的是明确指定一个GROUP BY子句并将您在GROUP BY之后的字段添加到SELECT例如:

SELECT 
   PRODUCT.product_id, 
   AVG(ALL OYLAMA.rating) AS ORTALAMA,
   COUNT(OYLAMA.rating) AS TOPLAMOY 
FROM oc_review AS OYLAMA 
JOIN oc_product AS PRODUCT 
   ON(PRODUCT.product_id = OYLAMA.product_id) 
INNER JOIN oc_product_to_category AS KATEGORI 
   ON (KATEGORI.product_id = PRODUCT.product_id) 
WHERE KATEGORI.category_id = 69
GROUP BY PRODUCT.product_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM