/ / SQLite क्वेरी अपेक्षित के रूप में काम नहीं करती है - एंड्रॉइड, एसक्लाइट

SQLite क्वेरी अपेक्षा के अनुसार काम नहीं करती है - एंड्रॉइड, एसक्लाइट

मुझे 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");
  • व्यायाम तालिका: अभ्यास का संग्रह
  • पर्सनललिस्ट टेबल: सूची का संग्रह
  • Exercise_Personal_List: एक संदर्भ जिसमें व्यायाम का हिस्सा है 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 होना चाहिए।

बीटीडब्ल्यू, मैं उपयोग कर रहा हूँ http://sqlfiddle.com इस सामान का मूल्यांकन करने के लिए। यह परीक्षण के लिए तेज़ है :)

आपकी सहायताके लिए धन्यवाद!

उत्तर:

जवाब के लिए 2 № 1

मुझे लगता है कि आप निम्नलिखित क्वेरी कर रहे हैं जहां दूसरा उदाहरण है 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"
)

जवाब के लिए 0 № 2

सृजन में थोड़ा गड़बड़ है - आपको इसका उपयोग नहीं करना चाहिए 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"
)