私は自己学習型で、SQLite の初心者です。3 つのテーブル (person、pet、person_pet) があり、.schema は次のとおりです。
CREATE TABLE person (
id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
age INTEGER,
dead INTEGER,
phone_number INTEGER,
salary FLOAT,
dob DATETIME
);
CREATE TABLE person_pet (
person_id INTEGER,
pet_id INTEGER,
);
CREATE TABLE pet (
id INTEGER PRIMARY KEY,
name TEXT,
breed TEXT,
age INTEGER,
dob DATETIME,
purchased_on DATETIME,
parent INTEGER /*Contains the ID of the pet's parent*/
);
私の仕事は、2004 年以降に購入したペットとその所有者のすべての名前を見つけることができるクエリを作成することです。2 つの値を返すサブクエリを実行しようとしましたが、うまくいきません。(「もちろん」と言う人もいます。) 私の質問は、サブクエリから 2 つの値を返すことができない場合、どうすればこのタスクを達成できるでしょうか?
このサブクエリを試しました:
SELECT first_name, name FROM person, pet WHERE person.id pet.id IN(
SELECT person_id FROM person_pet WHERE pet_id IN (
SELECT id FROM pet WHERE purchased_on IN (
SELECT pet.purchased_on
FROM pet, person_pet, person
WHERE person.id = person_pet.person_id AND
pet.id = person_pet.pet_id AND
pet.purchased_on > '2004/01/01 0:0:0 AM'
)
)
SELECT pet_id FROM person_pet WHERE id IN (
SELECT id FROM pet WHERE purchased_on IN (
SELECT pet.purchased_on
FROM pet, person_pet, person
WHERE person.id = person_pet.person_id AND
pet.id = person_pet.pet_id AND
pet.purchased_on > '2004/01/01 0:0:0 AM'
)
)
);
PS: 私の質問が少し長い場合は申し訳ありません。