ユーザーが好きなものと、好きなものが好きな他の人に応じて、アーティストをユーザーに提案するクエリを作成する必要があります。あなたがそれを手に入れることを願っています。
とにかく、問題のテーブルは members (自明) と 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: 会員IDでartist_followsからfollows_ID(フォローしているユーザー)を取得する
3:メンバーがフォローしている人のIDSを取得します。(次の目的で、これを「他のメンバー IDS」と呼びます)。
4:「他のメンバーIDS」から他のアーティストIDSを取得し、そのメンバーがすでにフォローしているアーティストが選択されていないことを確認します。
それが助けになったようにそれを分解することを願っています!
アップデート!
提案されているように、いくつかのモックデータを用意しましょう。メンバー2
が IDS でアーティストをフォローしているとし3
ます。別のメンバー ( 4
) も に続き3
ます20
。したがって、クエリの結果は次のようになります。20
スキーマ:
アーティスト_フォロー;
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