該圖顯示了我的表的結構。第一行是指導老師B給學生D 10分。第二行意味着導師E並沒有給學生D留下任何印記。有關生成新表的SQL問題
怎樣才能下表?我在stackoverflow.com中引用了另一篇文章。然而,我仍然很困惑。
從圖像如上所示,裝置推薦的O,其速率高於或等於7; x表示不推薦,其比率小於7.
例如,教師B給學生D 10分,因此,從圖像的第二行,我們可以看到StudentD列中有一個「o」。 (其他三行數據現在只是隨機分配)
現在,如果我想推薦一位學生作爲輔導老師A.TutorB,C和D的等級(或相似度)分別是0,2和3。
如何生成一個SQL,以便我能夠將速率轉換爲「o」和「x」並計算排名。而且,最重要的是,我想從圖像中推薦StudentH給TutorA。
我應該如何修改上一篇文章中的代碼?而且,如果我上面提到的想法是正確的?
謝謝。
============================================== ==============================
EDITED
我在數據庫中的以下數據。第一行意味着由導師A給studentC給出10個標記。
我把它轉換爲另一個表以更好地理解。 v
是Rate的值。
create temporary table ub_rank as
select similar.NameA,count(*) rank
from tbl_rating target
join tbl_rating similar on target.NameB= similar.NameB and target.NameA != similar.NameA
where target.NameA = "tutorA"
group by similar.NameA;
select similar.NameB, sum(ub_rank.rank) total_rank
from ub_rank
join ub similar on ub_rank.NameA = similar.NameA
left join ub target on target.NameA = "tutorA" and target.NameB = similar.NameB
where target.NameB is null
group by similar.NameB
order by total_rank desc;
select * from ub_rank;
上面的代碼從Collaborative filtering in MySQL?引用。我有幾個問題。
SQL中有2個部分。我可以從第一部分中選擇*。但是,如果我輸入如上所示的整個SQL,則系統會提示
Table 'mydatabase.ub' doesn't exist
如何修改代碼?該代碼將找到相似性。我應該如何更改代碼,如果標記少於7,則更改爲
o
,否則更改爲v
,並計算給定用戶的相似度?
表中的最後一行是什麼意思?這是StudentD給TutorB給出的「評分」嗎?另外,你的桌子上有多少學生?你真的想爲每個現有的學生提供專欄嗎? – BellevueBob 2013-03-24 21:57:12
@BellevueBob是的,它表示StudentD給TutorB給出的「評分」。上面的第二張圖片顯示了「推薦學生」部分,我使用的數據與第一張圖片的前兩行中的數據類似。另一方面,當我執行推薦導師部分時,我將使用DB表格數據的第三行到最後一行的數據。對於學生人數,我還沒有考慮好。我想我會先嚐試找出表格,然後嘗試限制尺寸。 – HUNG 2013-03-24 22:05:13