pap*_*tas 1 mysql sql group-by
我写的这个查询,列出了销售竞赛中的前25名,显示错误的结果.
用户没有显示应该在列表中相当远的地方.知道问题是什么吗?
SELECT u.fname, u.lname, SUM(p.point) as points
FROM comp_sale s, comp_product p, comp_user u
WHERE s.prod_id = p.product_id
AND s.sale_id = u.wp_id
GROUP BY lname
ORDER BY points DESC limit 25
Run Code Online (Sandbox Code Playgroud)
table comp_user:
user_id int(11) NO PRI NULL auto_increment
fname varchar(255) NO NULL
lname varchar(255) NO NULL
storename varchar(255) NO NULL
city varchar(255) NO NULL
phone varchar(255) NO NULL
wp_id int(11) NO NULL
type varchar(255) NO NULL
Run Code Online (Sandbox Code Playgroud)
table comp_sale
prod_id int(11) NO NULL
sale_id int(11) NO NULL
serial varchar(255) NO NULL
Run Code Online (Sandbox Code Playgroud)
table comp_product
product_id int(11) NO PRI NULL auto_increment
description varchar(255) NO NULL
type varchar(255) NO NULL
cylinda_num int(11) NO NULL
eel_num int(11) NO NULL
point int(11) NO NULL
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 10
尝试使用适当的ANSI标准GROUP BY
SELECT
u.fname, u.lname, SUM(p.point) as points
FROM
comp_sale s
JOIN
comp_product p ON s.prod_id = p.product_id
JOIN
comp_user u ON s.sale_id = u.wp_id
GROUP BY
u.fname, u.lname
ORDER BY
points DESC
LIMIT 25
Run Code Online (Sandbox Code Playgroud)
另外,为了清楚起见,使用显式JOIN
| 归档时间: |
|
| 查看次数: |
6697 次 |
| 最近记录: |