MySQL 重複する項目名をSELECT

MySQL

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|天照|

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です