0

私は、SQLite に関して頭を包むことができない非常に単純な問題を抱えています。本を読んだり、例を追ったりして、 SQL についてもっと学ぼうとしています。演習の 1 つは、pet テーブルから別のペットの親であるペットを見つけるクエリを作成することです。pet.id 列と pet.parent 列はどちらも INTEGER データ型を使用します。したがって、あるペットの ID は 2 になり、別のペットの ID は 3 になります。ペット スキーマにはペット (ID、名前、品種、親) があります。構造のタイプ。たとえば、次のようにします: INSERT INTO pet VALUES(2, "scraps", "lolcat", 3); pet.id=2,pets.name=scraps,pet.breed=lolcat, pet.parent=3. このテーブルでは、一部のペットは他のペットの親にもなります。したがって、彼らの pet.id は、他のペットの parent.id にも一致します...(ちょっと複雑なようです)

それ以来、作成したと思われるクエリを作成しましたが、結果が返されないか、エラーがスローされません。そのクエリは次のとおりです。 SELECT pet.name, pet.breed FROM pet WHERE pet.parent = pet.id;

4

1 に答える 1

0

演習 13について話している場合: 実際には次のように書かれています。

特定のペットの子供であるペットを検索できるクエリを作成します。

特定の親ペットとその IDがあり、その ID を ID として持つすべてのペットを検索しparentます。

SELECT * FROM pet WHERE parent = 3

親子関係にあるすべてのペットを見つけるには、2 匹の異なるペットを同時に含むクエリを実行する必要があります。これには結合が必要です。この場合、これらのレコードが同じテーブルから取得されるという追加の問題があるため、エイリアス ( AS) を使用して一方または両方のテーブルの名前を変更し、それらの列を明確にアドレス指定できるようにする必要があります。

SELECT parent.name,
       parent.breed,
       child.name,
       child.breed
FROM      pet AS parent
     JOIN pet AS child
     ON parent.id = child.parent
WHERE ...    -- if needed
于 2013-02-26T20:17:53.667 に答える