假設它是一個銷售照相機的網站。這裏是我的實體(表):你能解決這個簡單的SQL查詢嗎?
Camera: A simple camera
Feature: A feature like: 6mp, max resolution 1024x768,
的東西是照相機和功能,我已經有了一個多對多的關係之間,所以我有一個額外的表:
camera -> cameras_features -> feature
因此,查詢很簡單:
如何獲得具有1,2和3功能的所有相機?
這就像構建一個位圖索引。
數據,你可以用它來測試,如果該解決方案是確定
C1 has features 1,2,3
C2 has features 1,2,4
C3 has features 1,2
這裏是querys和預期的結果:
- 顯示所有具有功能1,2攝像機和3:C1
- 顯示所有具有功能1的相機, 2和4:C2
- 顯示所有具有的特徵1和2的攝像頭:C1,C2和C3
這裏是我做了什麼(它的工作原理,但它確實難看,不想使用它):
SELECT * FROM camera c
WHERE c.id IN (
(SELECT c.id FROM camera c JOIN cameras_features f ON (c.id=f.camera_id)
WHERE f.feature_id=1)
q1 JOIN -- simple intersect
(SELECT c.id FROM camera c JOIN cameras_features f ON (c.id=f.camera_id)
WHERE f.feature_id=2)
q2 JOIN ON (q1.id=q2.id)
)
我很慚愧,這不是家庭作業,但標籤沒問題。 – santiagobasulto 2012-02-01 20:38:08