मुझे 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"
)