まず、私は SQL (この場合は sqlite3) の経験がほとんどないため、この質問のタイトルでさえ不適切な表現である可能性があることに注意してください。
ノートのテーブル ( n
)、それらのノートのキーワードのテーブル ( k
)、そして最後に、1 つまたは複数のキーワードを各ノートに関連付けるテーブル( ) があるとしnk
ます。私がやりたいことは、それぞれが 2 つ (またはそれ以上) のキーワードを含むメモを見つけることです。
もう少し具体的に言うと、以下の (sqlite3) は、データベースのセットアップ方法です。
CREATE TABLE n(nid integer primary key autoincrement, content);
CREATE TABLE k(kid integer primary key autoincrement, content);
CREATE TABLE nk(nkid integer primary key autoincrement, nid, kid);
INSERT INTO n(content) VALUES ("note 1");
INSERT INTO n(content) VALUES ("note 2");
INSERT INTO k(content) VALUES ("keyword 1");
INSERT INTO k(content) VALUES ("keyword 2");
INSERT INTO nk(nid, kid) VALUES (1, 1);
INSERT INTO nk(nid, kid) VALUES (1, 2);
INSERT INTO nk(nid, kid) VALUES (2, 1);
これで、キーワード ID 1 でタグ付けされたノートを取得できます。
select * from n LEFT JOIN nk ON nk.nid = n.nid WHERE nk.kid=1;
私の質問は、キーワード ID 1と2 を使用してメモを取得する方法です。Web で検索を行いましたが、私の知識では適切な検索用語を考えることができないのではないかと心配しています。このサイトの誰かが助けてくれることを願っています。重要なのは、これがばかげた質問である場合は申し訳ありません.