我是新来的,需要一些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_sale
,id_product
,id_category
,id_employee
,id_payment_type
,id_sale_type
,id_shop_session
),
KEY id_sale
(id_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
)
答案 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或每个类别的价格,您都可以分组。