/ / SQLiteクエリが期待どおりに動作しない - android、sqlite

---- 13 their-- their body their body their body their body their body their body their body their body their body their body their- their- 13- 13 their their body body body body body their body their 13 their their their body their their their body their 13 13

私はSQLiteクエリに問題があり、それを把握できません。これらは私のテーブルです:

CREATE TABLE Exercise
(
e_id int auto_increment primary key,
name varchar(20)
);

CREATE TABLE PersonalList
(
p_id int auto_increment primary key,
name varchar(20)
);

CREATE TABLE Exercise_Personal_List
(
e_id_m int auto_increment primary key,
p_id_m int
);


INSERT INTO Exercise
(e_id, name)
VALUES
("1", "exercise1"),
("2", "exercise2"),
("3", "exercise3"),
("4", "exercise4"),
("5", "exercise5"),
("6", "exercise6");

INSERT INTO PersonalList
(p_id, name)
VALUES
("1", "list1"),
("2", "list2"),
("3", "list3");

INSERT INTO Exercise_Personal_List
(e_id_m, p_id_m)
VALUES
("2", "1"),
("4", "1"),
("6", "1"),
("1", "2");
  • エクササイズテーブル:エクササイズのコレクション
  • PersonalListテーブル:リストのコレクション
  • Exercise_Personal_List:Exerciseが含まれる参照。Exercise_Personal_List

特定のリストにまだ追加されていない練習問題のリストを取得しようとしています。たとえば、リスト1に追加されていない練習問題のリストを取得しようとしています。

select * from Exercise
where e_id not in (
select e_id from Exercise_Personal_List
where p_id_m like "1"
)

結果は空です。クエリのエラーは表示されません。正しい結果は1,3,5です。

Btw、私は http://sqlfiddle.com このことを評価する。それはテストの方が速いです:)

ご協力いただきありがとうございます!

回答:

回答№1は2

私はあなたが次の質問をしていることを意味すると思います。 e_id 変更されました e_id_m

select * from Exercise
where e_id not in (
select e_id_m from Exercise_Personal_List
where p_id_m like "1"
)

回答№2の場合は0

創造の中に少し混乱があります - あなたは使うべきではありません auto_increment 結合テーブルに:

CREATE TABLE Exercise_Personal_List
(
e_id_m int,
p_id_m int
);

選択肢は次のとおりです。

select * from Exercise
where e_id not in (
select e_id_m as e_id from Exercise_Personal_List
where p_id_m like "1"
)