我是MySQL和PHP的新手,我來自OO背景,試圖圍繞SQL查詢來包裝頭,這有點令人沮喪。現在我試圖在給定用戶ID和類別的同一表中找到所有匹配的ID。MySQL加入澄清
下面是我試圖回答的問題:給定用戶A和類別X,還有哪些其他用戶在類別X中與用戶A具有相同的興趣以及這些興趣是什麼?
下面的代碼我到目前爲止:
CREATE TEMPORARY TABLE IF NOT EXISTS t_int_map AS (
SELECT intmap.fb_id, intmap.interest_id
FROM interest_map AS intmap
INNER JOIN interests AS i ON intmap.interest_id = i.id
WHERE intmap.fb_id = <ID of User A> AND i.category = '<Category User A selects');
SELECT im.fb_id, im.interest_id, i.name
FROM interest_map AS im
INNER JOIN interests AS i ON im.interest_id = i.id
INNER JOIN t_int_map AS t_
WHERE t_.interest_id = im.interest_id
這是給我所有利益用戶A的結果集具有在X類以及誰擁有匹配其他用戶該類別下的利益。我想放棄所有不與其他用戶共享的興趣。 IE:如果用戶A在X類下有10個利益,並與用戶B共享2個利益,我想只看到包含共享興趣的行(所以總共有6行,3對於用戶A,對於B爲2,對於C爲1)。
最好的做法是創建一個像這樣的臨時表,還是有更好的方法來做到這一點?我寧願不創建一個臨時表,但我無法獲得一個子選擇查詢來工作,該子選擇返回多於一行。任何和所有的建議非常感謝,謝謝!
謝謝!我正在研究使用變量作爲另一個潛在的解決方案,我在臨時中只有臨時表解決方案。現在我只需要修改它並轉換成PHP。 –