【发布时间】:2012-07-03 21:56:02
【问题描述】:
我有一些表格大致是这样的:
Client:
id
name
Employee
id
name
Email
id
to : Client [ForeignKey]
from : Employee [ForeignKey]
EmailStats (Tracks the stats for a particular single email)
id
email : Email [OneToOne]
curse_words : 10
我想要做的事情:我想要获取所有至少向单个客户写过一封电子邮件的员工,以及他们的次数”我在他们发给那个单一客户的任何电子邮件中诅咒,即针对特定的Client return
[
('name' : 'Paul', 'total_curses' : 255),
('name' : 'Mary', 'total_curses' : 10),
]
我的尝试:
我对 SQL 的理解很薄弱,因为我习惯使用 ORM。我无法理解Employees 的正常检索如何链接到诅咒词的计数。这是我所做的(善良!):
SELECT DISTINCT (
SELECT SUM(EmailStats.curse_words)
FROM EmailStats
INNER JOIN (
SELECT Email.id
FROM Email
INNER JOIN Employee
ON Email.from = Employee.id
WHERE Email.to = 5 // Assuming 5 is the client's id
) filtered_emails ON EmailStats.email = filtered_emails.id
) AS 'total_curses', Employee.name
FROM Employee
INNER JOIN Email
ON Email.from = Employee.id
WHERE Email.to = 5 // Assuming 5 is the client's id
ORDER_BY 'total_curses'
这不起作用 - 它似乎获取了正确的 Employees(那些发送到 Client 的人),但诅咒计数似乎是所有发送到该 Client 的电子邮件的总数,而不仅仅是那些来自Employee的诅咒。
我有一种感觉,我在这里严重误解了一些东西,所以如果有人能提供一个如何成功解决这个问题的例子,我会很感激一些指示。
【问题讨论】:
-
没有建设性,但你为什么样的公司工作?诅咒你的客户?大声笑!
标签: mysql sql sqlite postgresql