所以兩個具體條目一個表中選擇所有條目,我有這樣的定義2個表:從具有另一個表
CREATE TABLE tblPersons (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
CREATE TABLE tblHobbies (
person_id INTEGER REFERENCES tblPersons (id),
hobby TEXT
);
再舉例來說,我已經加入到tblPersons 3人:
1 | skiing
1 | serfing
1 | hiking
1 | gunsmithing
1 | driving
2 | table tennis
2 | driving
2 | hiking
3 | reading
3 | scuba diving
:在
tblHobbies
1 | John
2 | Bob
3 | Eve
而旁邊的愛好
而我需要的是查詢,它會給我一個有幾個特定愛好的人的名單。
我能想出的唯一的事情,是這樣的:
SELECT id, name FROM tblPersons
INNER JOIN tblHobbies as hobby1 ON hobby1.hobby = 'driving'
INNER JOIN tblHobbies as hobby2 ON hobby2.hobby = 'hiking'
WHERE tblPersons.id = hobby1.person_id and tblPersons.id = hobby2.person_id;
但它是相當緩慢。沒有更好的解決方案嗎?
這將是更好的方式有三個表:人,霍s和person_hobbies。所以你會在愛好桌上擁有一次興趣愛好,並且可以省去拼寫錯誤(例如鋸齒/衝浪)。 –