回答
只是随机的例子。你有一个城市的表格:Id,Lat,Lon,Name。你想显示一个城市到另一个城市的距离的用户表。你会写如
SELECT c1.Name, c2.Name, SQRT((c1.Lat - c2.Lat) * (c1.Lat - c2.Lat) + (c1.Lon - c2.Lon)*(c1.Lon - c2.Lon))
FROM City c1, c2
通常,为报告生成一个超集。
在PosgreSQL
:
SELECT COALESCE(SUM(sales), 0)
FROM generate_series(1, 12) month
CROSS JOIN
department d
LEFT JOIN
sales s
ON s.department = d.id
AND s.month = month
GROUP BY
d.id, month
这里有两个例子:
创建发票或其他文件,你可以创建一个临时表的副本名称的多个副本,那么笛卡尔加入该表到实际的发票记录。结果集将包含发票副本的一个记录,包括要在页面顶部或底部的栏中打印的副本的“名称”或作为水印。使用这种技术,程序可以向用户提供复选框,让他们选择要打印的副本,甚至允许他们打印用户输入副本名称的“特殊副本”。
CREATE TEMP TABLE tDocCopies (CopyName TEXT(20))
INSERT INTO tDocCopies (CopyName) VALUES ('Customer Copy')
INSERT INTO tDocCopies (CopyName) VALUES ('Office Copy')
...
INSERT INTO tDocCopies (CopyName) VALUES ('File Copy')
SELECT * FROM InvoiceInfo, tDocCopies WHERE InvoiceDate = TODAY()
创建日历矩阵,每人每天一个记录,笛卡尔参加人表包含所有天一个星期,一个月,一年或另一个表。
SELECT People.PeopleID, People.Name, CalDates.CalDate
FROM People, CalDates
您可能希望创建使用所有来自两个查找表的可能组合的报告,以创造与每一个可能结果的值的报告。
考虑bug跟踪:你有一个表的严重程度和另一个用于优先级和要显示的每个组合的计数。你可能最终是这样的:
select severity_name, priority_name, count(*)
from (select severity_id, severity_name,
priority_id, priority_name
from severity, priority) sp
left outer join
errors e
on e.severity_id = sp.severity_id
and e.priority_id = sp.priority_id
group by severity_name, priority_name
在这种情况下,笛卡尔严重程度和优先级之间的连接提供了可以创建后外连接对主列表。
这是我一生中唯一的一次,我已经找到了一个笛卡尔积合法使用。
在最后公司在我工作过,有被要求按季度对确定在每个地理区域使用了什么样的常见问题的国家网站,我们在工作报告。
我们的数据库通过元组(4, x)
描述了地理区域(市场),其中4
表示层次结构中的层级号码,并且x
表示唯一的marketId
。
每个FAQ由FaqId
标识,每个与FAQ的关联由复合键marketId
元组和FaqId
定义。这些关联是通过管理应用程序设置的,但考虑到系统和120个市场中有1000个常见问题解答,创建新常见问题解答时设置初始关联是一件麻烦事。所以,我们创建了一个默认的市场选择,并且覆盖(-1,-1)
的一个marketId
元组来表示这个。
发回的报道 - 需要显示每一个常见问题提问/回答并以2D矩阵(我们使用的Excel电子表格)显示此FAQ市场的报告。我发现,在默认市场选择案例中,将每个FAQ与每个市场相关联的最简单方法是使用此查询,将爆炸结果与所有其他直接常见问题解答市场关联结合在一起。
Faq2LevelDefault
表格包含所有定义为默认选择的市场(我相信它只是一个marketIds列表)。
SELECT FaqId, fld.LevelId, 1 [Exists]
FROM Faq2Levels fl
CROSS JOIN Faq2LevelDefault fld
WHERE fl.LevelId=-1 and fl.LevelNumber=-1 and fld.LevelNumber=4
UNION
SELECT Faqid, LevelId, 1 [Exists] from Faq2Levels WHERE LevelNumber=4
当运行在给定范围内的每个日期的查询。例如,对于某个网站,您可能想知道每天有多少用户在过去的N天内处于活动状态。您可以运行的每一天在一个循环的查询,但它是最简单的把所有的逻辑相同的查询,并在某些情况下,DB可以优化直角加入了。
我已经注意到这个正在做尝试,系统要么执行压力测试或失踪发展成果的借口故意放慢。
要创建的文本挖掘相关词的列表,使用相似的功能,例如编辑距离
- 1. 熊猫据帧笛卡儿连接
- 2. 在级联中实现笛卡尔连接
- 3. 被Java 8实现的集合笛卡儿积
- 4. 笛卡儿加入data.table
- 5. TypeScript节点模块实现在哪里生活
- 6. JDBC的JDBC连接接口**的** prepareStatement **实现在哪里?
- 7. 使用.sub()在现实生活中
- 8. 我在哪里使用TextWatcher实现?
- 9. java.sql.Connection接口的实现在哪里?
- 10. 连接和移除笛卡尔积
- 11. 替代笛卡尔和交叉连接
- 12. SQL可能的笛卡尔连接
- 13. 两个数组的笛卡尔连接
- 14. 如何在Spark 2.0中启用笛卡尔连接?
- 15. 从笛卡儿转换为球形matlab?
- 16. 笛卡儿斜率计算错误Java
- 17. 哪里可以在派生类中调用基类的实现?
- 18. MapReduce现实生活中使用
- 19. 使用笛卡尔连接优化sql查询
- 20. 使用升压连接组件与笛卡尔点
- 21. Scalaz Bind.bind在哪里实现?
- 22. OutputStream实现在哪里
- 23. Array.map的实现在哪里?
- 24. System.ServiceModel.ServiceHost.Dispose()的实现在哪里?
- 25. 如何使用外连接和笛卡尔积连接三个表
- 26. 连接两列在哪里
- 27. 连接在哪里条款
- 28. 笛卡尔连接多重外连接到公共根
- 29. 哪里不使用IDisposable实现?
- 30. 更新内部连接MySQL在哪儿
是除了地球上的距离,不喜欢的工作,你需要一个大圈做正确 – 2010-03-04 15:24:53
我一直在等待这个表彰:)我完全同意,但例子是关于SQL – Andrey 2010-03-04 15:27:10