假設我們有以下模式:通過結合表有一組特定的與它們相關聯的項目中選擇行
CREATE TABLE customers(
id INTEGER PRIMARY KEY,
name TEXT
);
CREATE TABLE items(
id INTEGER PRIMARY KEY,
name TEXT
);
CREATE TABLE customers_items(
customerid INTEGER,
itemid INTEGER,
FOREIGN KEY(customerid) REFERENCES customers(id),
FOREIGN KEY(itemid) REFERENCES items(id)
);
現在我們插入一些示例數據:
INSERT INTO customers(name) VALUES ('John');
INSERT INTO customers(name) VALUES ('Jane');
INSERT INTO items(name) VALUES ('duck');
INSERT INTO items(name) VALUES ('cake');
讓我們假設約翰和簡的身份證號碼分別爲1和2,鴨和蛋糕的身份證號碼分別爲1和2。 讓我們給約翰和一隻鴨子和一塊蛋糕給簡。現在
INSERT INTO customers_items(customerid, itemid) VALUES (1, 1);
INSERT INTO customers_items(customerid, itemid) VALUES (2, 1);
INSERT INTO customers_items(customerid, itemid) VALUES (2, 2);
,我想要做的就是運行兩種類型的查詢:
- 誰同時擁有一隻鴨子和蛋糕的客戶選擇名稱(應返回「簡」只) 。
- 選擇有鴨子的顧客的名字並且沒有蛋糕(只能返回'John')。
參見:http://stackoverflow.com/questions/29012455/find-the-sids-of-the -suppliers - 誰 - 供應 - 每部/ 29013311#29013311。這個問題有很多的演練,因爲它的一些版本通常是解釋查詢的例子。一旦你掌握了第一個問題的答案,那麼修改它以回答你的第二個問題應該很容易。 –
如果你試圖自己想象,它會對你的學習更有趣和更好。您可以使用EXISTS或JOIN。 –