演習課題「テーブルを左結合して表示する」
右の環境には、SinatraでMySQLからplayersテーブルのデータを表示するプログラムが作成してあります。
このファイルを修正して、playersテーブルとjobsテーブルを左結合して、全データを表示してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#05:Rubyでテーブルを連結してデータを取り出す
ここでは、複数のテーブルを結合して扱う方法を学んでいきます。
SQLを使って、mydbデータベースの「p「players」テーブルの「job_id」と「jobs」テーブルの「id」を結合します。
テーブルの結合とは、重複したデータのテーブルを分割しておいて、必要に応じて、仮想的な1つの表として連結して扱う方法です。このようにテーブルを結合することを「リレーション」とか「連結」「関連付け」と呼ぶ場合もあります。
# テーブルを結合して表示する(左結合)
SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id# テーブルを結合して表示する(左結合)
SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id# テーブルを結合して表示する(右結合)
SELECT * FROM players RIGHT JOIN jobs ON jobs.id = players.job_id
- 左結合(LEFT JOIN): 両方のテーブルに共通のデータを表示
- 外部結合
- 左結合(LEFT JOIN): 左側テーブルを基準に表示
- 右結合(RIGHT JOIN): 右側テーブルを基準に表示
# テーブルを結合する
require 'mysql2'
require 'sinatra'
require 'sinatra/reloader'
require 'erb'
client = Mysql2::Client.new(:host => "localhost", :username => "root", :database => "mydb")
get '/' do
sql = "SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id"
statement = client.prepare(sql)
@results = statement.execute()
erb :index
end