Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonとMySQLでテーブルの自己結合(SELF JOIN)を実行する方法を解説

SQLでは、共通の列や指定した条件に基づいて2つのテーブルを結合できます。結合には内部結合(INNER JOIN)、外部結合(OUTER JOIN)などさまざまな種類がありますが、本記事ではその中でも「自己結合(SELF JOIN)」について詳しく解説します。

自己結合とは、その名の通り、テーブル自身と自分自身を結合する操作のことです。同じテーブルの2つのコピーの間で結合が実行され、何らかの条件に基づいてテーブル内の行同士がマッチングされます。

自己結合の基本構文

SELECT a.column1, b.column2
FROM table_name a, table_name b
WHERE condition;

a と b は、同じテーブルに付けた2つの別名(エイリアス)です。table_name には自己結合を行うテーブルの名前を指定します。自己結合では同一のテーブルを使用するため、FROM句の中で同じテーブル名を2箇所に記述し、それぞれ異なるエイリアスを付けるのがポイントです。

サンプルテーブル

ここでは、次のような「Students」テーブルを例に説明します。

Students

+----------+--------------+-----------+
|    id    | Student_name | Dept_id   |
+----------+--------------+-----------+
|    1     |    Rahul     |    120    |
|    2     |    Rohit     |    121    |
|    3     |    Kirat     |    121    |
|    4     |    Inder     |    123    |
+----------+--------------+-----------+

このテーブルに対して、「a.Dept_id < b.Dept_id」という条件で自己結合を実行します。これは、テーブル内の各行が、その行よりも Dept_id の値が小さい他の行すべてとマッチングされることを意味します。

PythonでMySQLを使って自己結合を実行する手順

  • mysql.connector モジュールをインポートする

  • connect() メソッドを使ってデータベースへの接続を確立する

  • cursor() メソッドでカーソルオブジェクトを作成する

  • 適切なMySQLステートメントでSQLクエリを作成する

  • execute() メソッドでSQLクエリを実行する

  • fetchall() で結果を取得し、処理後に接続を閉じる

サンプルコード

import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="your password", database="database_name")

cursor=db.cursor()
query="SELECT a.Dept_id,b.Student_name FROM Students a, Students b WHERE a.Dept_id<b.Dept_id"
cursor.execute(query)
rows=cursor.fetchall()
for x in rows:
    print(x)

db.close()

このコードでは、まず mysql.connector を使ってデータベースに接続し、カーソルオブジェクトを作成しています。その後、自己結合のクエリを execute() メソッドで実行し、fetchall() によってすべての結果行を取得して1行ずつ表示します。最後に close() メソッドで接続を閉じ、リソースを解放します。

実行結果

Dept_id
Student_name
120
Rohit
120
Kirat
120
Inder
121
Inder
121
Inder


このように、自己結合を活用することで、同一テーブル内の行同士を柔軟に比較・マッチングできます。組織図における上司と部下の関係抽出など、実務でもよく使われるテクニックなので、ぜひマスターしておきましょう。

  1. PythonとTensorFlowで2つの行列を乗算する方法を解説

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに

  2. PythonとTensorFlowを使って2つの行列を加算する方法

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広い場面で活用されており、複雑な数値計算を高速に実行するための最適化技術が多数搭載されています。この高い処理性能は、NumPyおよび多次元配列の仕組みによって支えられています。これらの多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築を強力にサポートしており、高い拡張性を持つほか、代表的な