我需要創建一個查詢,向用戶建議藝術家取決於他們喜歡什麼以及其他喜歡他們喜歡什麼的人。希望你明白。mysql - 創建一個「建議藝術家關注」查詢
無論如何,有問題的表是成員(自我解釋)和artist_follows(哪些成員跟隨誰)。稍後我會將此查詢添加到更大的查詢中,該查詢還將從藝術家表中獲取該ID的藝術家信息。
這是我到目前爲止,我用2
作爲成員的模擬ID。
SELECT
M.ID AS M_ID,
F.ID AS F_ID,
F.follows_ID
FROM members M
LEFT JOIN artist_follows F
ON F.ID = M.ID
WHERE M.ID ='2'
我意識到它並不是很多,但只要我能得到,我爲什麼會來到這裏。
繼承人做什麼需要一個細分:
1:獲取從成員表ID。
2:獲取follows_ID(用戶遵循誰)從artist_follows使用會員ID
3:獲取的誰遵循以下成員的人誰IDS。 (爲了下一點的目的,稱這個「其他成員IDS」)。
4:從「其他成員IDS」獲取其他藝術家IDS,確保未選中該成員已經關注的藝術家。
希望把它打破,就像幫助!
更新! 讓我們有一些模擬數據,然後建議。可以說會員2
跟隨藝術家與IDS 3
。另一個成員(4
)跟在3
以及20
之後。因此,查詢的結果應該是20
模式:
artist_follows;
CREATE TABLE `artist_follows` (
`ID` int(11) NOT NULL,
`follows_ID` int(11) NOT NULL,
KEY `fav_ID` (`ID`),
CONSTRAINT `fav_ID` FOREIGN KEY (`ID`) REFERENCES `artists` (`ID`),
CONSTRAINT `ID` FOREIGN KEY (`ID`) REFERENCES `members` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
成員;
CREATE TABLE `members` (
`ID` int(111) NOT NULL AUTO_INCREMENT,
`email` varchar(100) COLLATE latin1_general_ci NOT NULL,
`password` varchar(100) COLLATE latin1_general_ci NOT NULL,
`FNAME` varchar(100) COLLATE latin1_general_ci NOT NULL,
`SURNAME` varchar(100) COLLATE latin1_general_ci NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
能否請您發佈兩個表的結構和一些樣本數據,什麼是理想的結果,從這個樣本數據? –
F.ID是會員的ID和F.follows_ID是藝術家的ID嗎? –
@DavidGrenier是的正確 –