回答
只是隨機的例子。你有一個城市的表格: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