我编写的此查询列出了销售竞争中的前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
表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
表comp_sale
prod_id int(11) NO NULL sale_id int(11) NO NULL serial varchar(255) NO NULL
表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
尝试使用适当的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
另外,使用明确的JOIN来保持清晰