PythonでMySQLを使って2つのテーブルを内部結合(INNER JOIN)する方法
SQLでは、共通のカラムや指定した条件に基づいて、2つのテーブルを結合(JOIN)することができます。テーブルを結合するためのJOINにはいくつかの種類が用意されています。
本記事では、その中でも特に使用頻度の高い「内部結合(INNER JOIN)」について詳しく解説します。
なお、JOINとINNER JOINはまったく同じ動作をします。INNER JOINは、片方のテーブルの各行をもう片方のテーブルのすべての行と照合し、共通のカラムを持つ行同士、あるいは指定された条件を満たす行同士を組み合わせて1つの結果セットを作成します。
2つのテーブルを結合する際は、どの条件で結合するのかを必ず指定する必要があります。
基本構文
SELECT column1, column2... FROM table_1 INNER JOIN table_2 ON condition;
サンプルテーブル
ここでは、「Students(学生)」テーブルと「Department(学科)」テーブルという2つのテーブルを例に説明します。
Studentsテーブル
+----------+--------------+-----------+ | id | Student_name | Dept_id | +----------+--------------+-----------+ | 1 | Rahul | 120 | | 2 | Rohit | 121 | | 3 | Kirat | 122 | | 4 | Inder | 125 | +----------+--------------+-----------+
Departmentテーブル
+----------+-----------------+ | Dept_id | Department_name | +----------+-----------------+ | 120 | CSE | | 121 | Mathematics | | 122 | Physics | +----------+-----------------+
この2つのテーブルは、両方に存在する「Dept_id」カラムをキーとして結合します。
PythonでMySQLを使って2つのテーブルを結合する手順
mysql.connectorモジュールをインポートする
connect()メソッドでデータベースへの接続を確立する
cursor()メソッドでカーソルオブジェクトを作成する
適切なSQL文を使用してクエリを作成する
execute()メソッドでSQLクエリを実行する
接続を閉じる
コード例
import mysql.connector
db=mysql.connector.connect(host="your host", user="your username", password="your password", database="database_name")
cursor=db.cursor()
query="SELECT Students.Id,Students.Student_name,Department.Department_name FROM Students INNER JOIN Department ON Students.Dept_Id=Department.Dept_Id"
cursor.execute(query)
rows=cursor.fetchall()
for x in rows:
print(x)
db.close()実行結果
(1, 'Rahul', 'CSE') (2, 'Rohit', 'Mathematics') (3, 'Kirat', 'Physics')
注目すべき点として、4行目の学生「Inder」のデータは結果に含まれていません。これは、Studentsテーブルの4行目(Dept_id=125)に対応するレコードがDepartmentテーブルに存在しないためです。
INNER JOINは両方のテーブルに一致する行のみを返す性質があるため、対応するデータが存在しない行は自動的に結果から除外されます。もし一致しない行も結果に含めたい場合は、LEFT JOINやRIGHT JOINなど別種類の結合を検討するとよいでしょう。
-
PythonとTensorFlowで2つの行列を乗算する方法を解説
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに
-
PythonとTensorFlowを使って2つの行列を加算する方法
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広い場面で活用されており、複雑な数値計算を高速に実行するための最適化技術が多数搭載されています。この高い処理性能は、NumPyおよび多次元配列の仕組みによって支えられています。これらの多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築を強力にサポートしており、高い拡張性を持つほか、代表的な