为了暗示,我要说我们有5个用于SQL的表 p>
1)客户账户 2)潜在顾客 3)电话 4)报告
下面是我编写的一个SQL示例,用于了解它是如何工作的。我的问题是,如何从电话通话日期和5天后检索收到业务报告的记录。
实施例
今天是8.06.2017,我打电话给了一位主管。这个领先是ABC。 ABC对XYZ感兴趣。我于12.06.17向XYZ发送了一份报告。这是在5天之内。因此,我应该检索并计算此记录,因为我可能会在5天内找到超过100条记录。
SELECT Id, Name, DateOfCall
FROM Lead, Call, ClientAccounts
ON Lead.id = Call.id AND Lead.id = ClientAccounts.id
WHERE DATEDIFF (DateOfReport, StartOfCall, getDate()) < 5
如果我执行此Sql语句,它应检索上述报告,ClientAccount的名称以及与该ClientAccount关联的Lead。
我希望这是有道理的,我在SQL中非常初学者,但我知道我的SQL语法是错误的,但我的想法是理解这一点并稍后担心语法,因为我没有SQL服务器来执行它。
答案 0 :(得分:1)
你离目标不远。
您需要使用正确的JOIN
语法;你所拥有的有点破碎。
SELECT ... some columns ...
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
将别名L
,C
和CA
分配给您的三个表。
您可以尝试使用SELECT *
运行此功能,以查看您获得的内容。但是在完成的查询中使用*
是一个新手的错误。
接下来,您需要使用表格别名给出您希望SELECT
列的名称。我必须猜测每个列来自哪个表,因为您没有向我们展示您的表定义。所以,我猜......
SELECT L.id, L.Name, C.DateOfCall
FROM Lead L
JOIN Call C ON L.id = C.id
JOIN ClientAccounts CA ON L.id = CA.id
运行它。看看你得到了什么。如果我的示例有表或列名称错误,请修复它们。 (请不要让我们在这里修理它们;我们不知道你的桌面布局。)
最后,您需要选择日期范围。尝试
WHERE C.StartOfCall >= CURDATE() - INTERVAL 5 DAY
这将获得调用开始时或五天前午夜之后的所有行。