/ / SQLite dotaz nefunguje podľa očakávania - android, sqlite

SQLite dotaz nefunguje podľa očakávania - android, sqlite

Mám problém s dotazom SQLite a nemôžem to zistiť. Toto sú moje tabuľky:

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");
  • Tabuľka cvičení: zbierka cvičení
  • Tabuľka osobného zoznamu: zbierka zoznamu
  • Exercise_Personal_List: odkaz na ktorý Cvičenie je súčasťou Exercise_Personal_List

Snažím sa získať zoznam cvičení, ktoré ešte nie sú pridané do konkrétneho zoznamu, napríklad tie, ktoré nie sú pridané do zoznamu 1. Môj dotaz:

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

Výsledok je prázdny. Nevidel som chybu v dopyte. Správny výsledok by mal byť 1, 3, 5.

Btw, používam http://sqlfiddle.com hodnotiť tieto veci. Je to rýchlejšie pri testovaní :)

Vďaka za vašu pomoc!

odpovede:

2 pre odpoveď č. 1

Myslím, že chcete robiť nasledujúci dotaz, kde je druhá inštancia e_id bolo zmenené na 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"
)

0 pre odpoveď č. 2

V stvorení je trochu zmätok - nemali by ste ho používať auto_increment v spojovacej tabuľke:

CREATE TABLE Exercise_Personal_List
(
e_id_m int,
p_id_m int
);

A výber by mal byť:

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"
)