mysql group by只返回第一行

时间:2014-08-18 20:42:23

标签: php mysql join group-by

我是新来的,需要一些mysql查询帮助。

我有这个查询来检索连接查询中的几行。

SELECT   category.category, category_color.color,
SUM(sales.quantity) AS quantity, SUM(sales.price) AS total, sales.id_payment_type,
                    sales.price
                FROM sales
            INNER JOIN 
                category        USING (id_category)
            INNER JOIN 
                shop_session    USING (id_shop_session)
            INNER JOIN 
                category_color  USING (id_category)
            WHERE shop_session.is_active = 1
            AND category.id_lang = "._ID_LANG_."
            AND shop_session.id_shop = ".$_SESSION['id_shop']."
            GROUP BY category.category
            ORDER BY category.category

我按类别分组是第一个目的,但是当我需要检索一些数据时,例如" price"或" id_payment_type" mysql只返回第一行,我需要从查询中获取所有行。我不知道如何解决这个问题。请帮忙!

我的销售数据库结构:

CREATE TABLE IF NOT EXISTS `sales` (

id_sale int(11)NOT NULL AUTO_INCREMENT,   id_product int(11)unsigned NOT NULL,   id_category int(11)unsigned NOT NULL,   id_employee int(11)unsigned NOT NULL,   id_payment_type int(11)unsigned NOT NULL,   id_sale_type int(11)unsigned NOT NULL,   id_shop_session int(11)unsigned NOT NULL,   position int(11)NOT NULL,   quantity int(11)NOT NULL,   price十进制(17,2)NOT NULL,   amount浮动NOT NULL,   invoice int(1)NOT NULL,   note varchar(150)COLLATE utf8_unicode_ci NOT NULL,   date_sale int(11)DEFAULT NULL,   PRIMARY KEY(id_saleid_productid_categoryid_employeeid_payment_typeid_sale_typeid_shop_session),   KEY id_saleid_sale) )

这是我的类别表的数据库结构:

CREATE TABLE IF NOT EXISTS `category` (

id_category int(10)unsigned NOT NULL,   id_lang int(10)unsigned NOT NULL,   category varchar(30)COLLATE utf8_unicode_ci NOT NULL,   is_active int(1)NOT NULL )

1 个答案:

答案 0 :(得分:0)

SELECT   category.category, category_color.color,
SUM(sales.quantity) AS quantity, SUM(sales.price) AS total, sales.id_payment_type,
sales.price FROM sales
INNER JOIN  category        USING (id_category)
INNER JOIN  shop_session    USING (id_shop_session)
INNER JOIN  category_color  USING (id_category)
WHERE shop_session.is_active = 1
AND category.id_lang = "._ID_LANG_."
AND shop_session.id_shop = ".$_SESSION['id_shop']."
GROUP BY category.category
ORDER BY category.category

此查询将为您提供您所拥有的每个类别的第一行,因为您正在使用分组,我说的是第一行,因为您使用带有隐式ASC的订单。

如果您想要所有id_payment_type或每个类别的价格,您都可以分组。