0
我目前正在創建一個粗略的排名/排序查詢,將「分數」用戶可以根據他們提交的數據進行試驗。SQL查詢不返回從和正確的號碼()
有人在角色/位置字段「總統」恰好一次將給予100分,任何以「%副%」(如副總裁)的角色/位置字段將被拿下一半左右給那些只有「總統」的人提供了什麼。
SELECT *, sum(relevance)
FROM (
SELECT a.*,
100 AS relevance
FROM application a,
document d
WHERE d.`Role/Position` LIKE 'president'
AND d.`AppID` = a.`AppId`
AND `AwardID` != 'NULL'
AND `Schoolyear` = '2013-2014'
UNION
SELECT a.*,
50 AS relevance
FROM application a,
document d
WHERE d.`Role/Position` LIKE '%vice%'
AND d.`AppID` = a.`AppId`
AND `AwardID` != 'NULL'
AND `Schoolyear` = '2013-2014'
) results
GROUP BY AppID
ORDER BY sum(relevance) DESC
我的問題是,如果我省略工會選擇部分,我可以想出總計200人爲有兩個「總統」字段的人。如果工會選擇部分保留在查詢中,則僅相關性爲100.
有兩個「總統」字段的人應該有200人,而有「%vice%」和「總統」的人會有150據推測它們的總和(相關性)值。對於擁有兩名「總統」和兩名「%犯罪率」的人來說,這一數字也不會超過150。有人能指出我做錯了什麼嗎?
我有很多關於SQL和網頁設計,這就是爲什麼我在確定在何處我已經錯了我的查詢請求幫助學習。我基於這個this guide作爲基礎的查詢。
與UNION ALL一起工作正常。謝謝您的幫助! –