⊗pyPmDOFR 126 of 129 menu

Pythonにおけるデータの関連性

例えば、父と子の情報を保存するタスクがあるとします。 各父は1人の息子のみを持ち、その息子もまた1人の息子を持つことができるとします。

データの保存方法を考える必要があります。 最初に思いつくアイデアは、2つのテーブルを作ることです:父用のparentsテーブルと、子用のsonsテーブルです。 次に、これらのテーブルを何らかのフィールド(son_idparent_idなど)で関連付けます。

しかし、このアイデアはあまり良くありません。なぜなら、同じ人が父でもあり子でもある場合があり、両方のテーブルに保存する必要が出てくるからです。これは不便で、より多くのスペースを占有し、エラーを引き起こしやすくなります。

より良い方法は、テーブルを自己結合することです:usersというテーブルを作り、すべてのユーザーを保存し、それぞれにson_idフィールドを設け、同じテーブル内の息子のidを保存します。

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

クエリ

それでは、ユーザーとその息子を一緒に取得するクエリを書いてみましょう。

まず、単にユーザーを取得してみます。

SELECT * FROM users

次に、ユーザーにその息子を結合します。 テーブルを自分自身に結合するため、エイリアス(別名)を付ける必要があります。

LEFT JOIN users as sons

これで、メインテーブルとエイリアスを付けたテーブル間の関係を指定できます。

LEFT JOIN users as sons ON sons.id=users.son_id

次に、フィールドを指定します。

SELECT users.name as user_name, sons.name as son_name

すべてをまとめると、次のクエリになります。

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

実践的な課題

カテゴリがあるとします。 各カテゴリは親カテゴリに所属でき、その親カテゴリもまた自身の親カテゴリに所属し、そのように続いていきます。 保存構造を設計してください。

カテゴリとその親カテゴリを一緒に取得するクエリを書いてください。

カテゴリとその親、さらに祖父母カテゴリを一緒に取得するクエリを書いてください。

カテゴリとその親、祖父母、曽祖父母カテゴリを一緒に取得するクエリを書いてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否