MySQL 重複する項目名をSELECTする際、エイリアスをつける
ここに2つのテーブルがあります。
ninjyaテーブルと、skillテーブルです。
ninjyaテーブルには、忍者の名前、skillテーブルには必殺技の名前が格納されています。
一人の忍者は多くの必殺技を持つという、1対他のデータ構造になっています。
|>|ninjya テーブル|h
|id|name|h
|1|ナルト|
|2|サスケ|
#br
|>|>|skill テーブル|h
|id|ninjya_id|name|h
|1|1|螺旋丸|
|2|1|ナルトキック|
|3|2|千鳥|
|4|2|天照|
このように、idをすべてのテーブルで共通で利用している場合もあるでしょう。
ただ単に連結したデータを取得します。
SELECT * FROM ninjya JOIN skill ON skill.ninjya_id = ninjya.id ORDER BY ninjya.id LIMIT 0 , 30
取得結果は次の通りです。
|id|name|id|ninjya_id|name|h
|1|ナルト|1|1|螺旋丸|
|1|ナルト|2|1|ナルトキック|
|2|サスケ|3|2|千鳥|
|2|サスケ|4|2|天照|
フィールド名に、idというのが2つありますよね。
このデータを加工したり、表示したりする際、面倒です。
エイリアスを利用して
SELECT ninjya.id AS ninjya_id, skill.id AS skill_id, ninjya.*, skill.* FROM ninjya JOIN skill ON skill.ninjya_id = ninjya.id ORDER BY ninjya.id LIMIT 0 , 30
としてみます。
取得結果は次の通りです。
|ninjya_id|skill_id|id|name|id|ninjya_id|name|h
|1|1|1|ナルト|1|1|螺旋丸|
|1|2|1|ナルト|2|1|ナルトキック|
|2|3|2|サスケ|3|2|千鳥|
|2|4|2|サスケ|4|2|天照|