【发布时间】:2012-01-20 01:03:40
【问题描述】:
这是一个关于mysql查询的问题。作为一个例子,让我们使用一个跟踪汽车销售的系统。有salespersons 的表,sales 的表和链接两者的表。大多数情况下,每笔销售只有一个人与之相关联。但有时多人与销售相关联。
Table sales
id | carId | date
---+-------+-----------
1 | 2 | 11-01-2011
2 | 8 | 11-02-2011
3 | 5 | 11-05-2011
Table link
personId | saleId
---------+-------
2 | 1
2 | 2
1 | 3
2 | 3
Table salesperson
id | name | age
---+-------+----
1 | Barry | 25
2 | Sara | 32
要检索数据,我想在网页中显示每次销售的信息。但是,当多人与销售相关联时,就会出现问题。我尝试在我的代码中应用下面的查询,之后 PHP 会处理多人与一次销售相关联的异常,但由于销售表的长度,下面的查询需要太多时间来运行:
SELECT count(personId) as amount, carId, date
FROM link
JOIN salesperson ON link.personId = salesperson.id
JOIN sales ON sales.id = link.saleId
GROUP BY link.saleId
有没有更高效的查询可以使用?顺便说一下,表的索引已经完成。
【问题讨论】:
-
您要检索哪些数据?是每个销售员的销售额吗?
-
我想显示关联销售人员的销售列表
-
你在链接中使用过任何索引吗??
-
是的,一个在 personID 上,一个在 saleID 上
-
我会加倍 ChrisBD,然后重新询问您要检索的内容。如果按 saleid 分组,那么销售人员的
name和age就没有意义了。
标签: mysql optimization count query-optimization