SQLの練習問題です。
筆者の環境は以下となっていますが、別のデータベースやツールでもほとんど同じように動作すると思います。
- MariaDB 5.5.48
- PhpMyAdmin 4.4.15.1
よくわからないという方は、XAMPをインストールすると簡単に筆者と同じ環境を構築できます。以下のページで紹介されています。
【PHP入門】環境構築
問題として使用するデータは以下からダウンロード可能です。phpMyAdminからデータベース(worldcup2014)を作成しインポートしておいてください。
worldcup2014.zip
問題:キックオフ日時と対戦国の国名をキックオフ日時の早いものから順に表示してください。
正解:
SELECT kickoff AS キックオフ日時, c1.name AS 国名1, c2.name AS 国名2 FROM pairings p LEFT JOIN countries c1 ON p.my_country_id = c1.id LEFT JOIN countries c2 ON p.enemy_country_id = c2.id ORDER BY kickoff
対戦スケジュールのテーブル(pairingsテーブル)に、my_country_idとenemy_country_idがあり、これらのカラムが出場国テーブル(countriesテーブル)の外部キーとなっています。
countriesテーブルを2つ結合し、それぞれのテーブルに別の別名を付けるところがポイントになります。上記の回答では、c1とc2としています。
連載目次リンク
関連する連載リンク
WEBアプリケーション関連 人気連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載