[英]Issue to build an sql query - running in sql developer
我是sql的新手,並且有一個名為Event的表,其中包含以下列:
因此,一個國家可以是意大利,巴西,英國或所有。
基本上,我需要構建一個查詢,該查詢將通過country作為參數,並且它將返回:
因此,例如如果全部通過,我將僅接收階段和類型不同的所有國家/地區的數據
如果巴西獲得通過,那么我將為巴西和那里的舞台和類型的所有國家/地區提供不同的待遇。
因此,如果我在以下記錄中查詢國家巴西:
ID: 1
Stage: C
Type: Football
Location:City
Country:All
ID: 2
Stage: C
Type: Football
Location:City
Country:Brazil
ID 3
Stage: D
Type: VolleyBall
Location:City
Country:All
ID 4
Stage: E
Type: handball
Location:City
Country:Brazil
它只會返回ID 3和ID 4,因為其他類型和階段是相同的。
如果適用於所有國家:
ID: 1
Stage: C
Type: basketball
Location:City
Country:All
ID: 2
Stage: D
Type: handball
Location:City
Country:Brazil
ID 3
Stage: C
Type: VolleyBall
Location:City
Country:ALL
它應該返回:僅ID 1和3。
我知道會是這樣的:
select *
from Event
where country =
任何幫助將是最歡迎的感謝
國家部分很容易。
您想獲得國家為All或國家與您的參數匹配的所有行
SELECT *
FROM Event
WHERE Country = @Country or Country = 'All'
您的第二部分要困難得多。
如果我理解您想返回該Stage / Type組合僅出現一次的所有行。 為此,您需要首先獲取每個組合的計數,然后選擇該計數= 1的組合
SELECT Stage, Type, count(*) occurrences
FROM Events
GROUP BY Stage, Type
HAVING count(*) = 1
該查詢按“階段”和“類型”對它們進行分組,並對它們進行計數,並僅選擇出現次數為1的那些。
您可以將其與聯接中的第一個查詢結合起來,以獲得我認為想要的東西。
SELECT *
FROM Event
JOIN (
SELECT Stage, Type, count(*) occurrences
FROM Events
GROUP BY Stage, Type
HAVING count(*) = 1
) uniqueEvents ON uniqueEvents.Stage = Event.Stage AND uniqueEvents.Type = Event.Type
WHERE Country = @Country or Country = 'All'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.