はるか
ふゅか
はるか
ふゅか
そうね…共通するキーを結合するという方法があるわ。
1. 内部結合とは
内部結合とは、データベースにおける結合の一種で、二つのテーブルを共通の列を基に結合し、両テーブルに共通して存在する行のみを結果として返す操作です。これにより、関連するデータを異なるテーブルから取り出して、一つの結果セットにまとめることができます。
2. 実際に動かしてみよう。
2.1. 1. テーブルの作成
CREATE TABLE characters (
character_id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
CREATE TABLE skills (
skill_id INTEGER PRIMARY KEY,
skill_name TEXT,
description TEXT
);
CREATE TABLE character_skills (
character_id INTEGER,
skill_id INTEGER,
FOREIGN KEY (character_id) REFERENCES characters(character_id),
FOREIGN KEY (skill_id) REFERENCES skills(skill_id)
);
INSERT INTO characters (character_id, name, age) VALUES (1, 'Alice', 25);
INSERT INTO characters (character_id, name, age) VALUES (2, 'Bob', 30);
INSERT INTO characters (character_id, name, age) VALUES (3, 'Charlie', 35);
INSERT INTO characters (character_id, name, age) VALUES (4, 'fuxyuka', 1500);
INSERT INTO characters (character_id, name, age) VALUES (5, 'haruka', 19);
INSERT INTO skills (skill_id, skill_name, description) VALUES (1, 'Magic', 'Ability to cast spells');
INSERT INTO skills (skill_id, skill_name, description) VALUES (2, 'Swordsmanship', 'Expert in using a sword');
INSERT INTO skills (skill_id, skill_name, description) VALUES (3, 'Archery', 'Skilled in using a bow and arrow');
INSERT INTO character_skills (character_id, skill_id) VALUES (1, 1);
INSERT INTO character_skills (character_id, skill_id) VALUES (1, 3);
INSERT INTO character_skills (character_id, skill_id) VALUES (2, 2);
INSERT INTO character_skills (character_id, skill_id) VALUES (3, 1);
INSERT INTO character_skills (character_id, skill_id) VALUES (3, 2);
INSERT INTO character_skills (character_id, skill_id) VALUES (3, 3);
2.2. 3. 内部結合の実行
データベースの関係は次のようになっています。

とりあえずcharactersテーブルの中身を見てみましょう。

はるか
ふゅか
2.3. キャラクターとスキルの結合を行う

はるか
たしかに、スキルが登録されていないキャラクターは表示されていないな。