アプリ版:「スタンプのみでお礼する」機能のリリースについて

実行前のテーブルの「tb」と「tb1」は
https://oshiete.goo.ne.jp/qa/12498872.html
から確認ができます。
さて!
テーブルの「tb」と「tb1」の内部結合で「カラムを選んで表示」しました。
①の実行結果
mysql> SELECT tb.bang,tb1.nama,tb.uria FROM tb JOIN tb1 ON tb.bang=tb1.bang;
+------+------+------+
| bang | nama | uria |
+------+------+------+
| A103 | 中川 | 101 |
| A102 | 高橋 | 54 |
| A104 | 渡辺 | 181 |
| A101 | 佐藤 | 184 |
| A103 | 中川 | 17 |
| A101 | 佐藤 | 300 |
| A102 | 高橋 | 205 |
| A104 | 渡辺 | 93 |
| A103 | 中川 | 12 |
+------+------+------+

次にエイリアス(偽名)でnamaをxとして、namaをyとして表示します。
②の実行結果
mysql> select x.bang,y.nama,x.uria from tb as x join tb1 as y on x.bang=y.bang;
+------+------+------+
| bang | nama | uria |
+------+------+------+
| A103 | 中川 | 101 |
| A102 | 高橋 | 54 |
| A104 | 渡辺 | 181 |
| A101 | 佐藤 | 184 |
| A103 | 中川 | 17 |
| A101 | 佐藤 | 300 |
| A102 | 高橋 | 205 |
| A104 | 渡辺 | 93 |
| A103 | 中川 | 12 |
+------+------+------+
以上ですが
①の実行結果と②の実行結果ですが何も変化なしです。

「参考書の実行結果」と「実際の実行結果」は普通の「内供結合」と同
結果なました。エイリアス後も何も変化がないので、エイリアスの意図が
見えてきません、何が変わったのでしょうか?
よろしくお願いいたします。

質問者からの補足コメント

  • 皆様ご回答くださいまして、ありがとうございます。
    さて
    カラム名をエイリアスにする
    書式 : SELECT カラム名 AS エイリアス FROM テーブル名;
    mysql> select bang as 社員番号,uria as 売上 from tb;
    +----------+------+
    | 社員番号 | 売上 |
    +----------+------+
    | a101 | 101 |
    | a102 | 54 |
    | a104 | 181 |
    | a101 | 184 |
    | a103 | 17 |
    | a101 | 300 |
    | a102 | 205 |
    | a104 | 93 |
    | a103 | 12 |
    | a107 | 87 |
    +---------+------+

      補足日時:2021/08/06 16:39
  • うーん・・・

    以上ですが、エイリアスした甲斐はありますね!

    ここでは、「bangoが社員番号」と「uriaが売上」
    に変化していて、わかりやすくなっています。

    エイリアスの目的はカラム名の変更ができ表示する
    ことがが可能の意味がありますね 他に何か役割
    がありましたら教えていただけないでしょうか?
    よろしくお願いいたします。

      補足日時:2021/08/06 16:55
  • スマホからです。
    再度ご解答くださいましてありがとうございます。手が空き次第お返事いたします。
    しばらくおまちください。。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/08/08 08:29

A 回答 (2件)

別名の主な効能は「結果を変えず」に SQL を簡潔に書けることです。


使っても簡潔にならないと感じるならば、使う必要はないでしょう。

大規模で複雑な条件の SQL を
意味を変えずに短く読みやすくしたい状況で活用してください。
というより、別名がなければ複雑な条件なぞ記述不可能です。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答くださいまして、ありがとうございました。
方法論じゃなくて えーと
もしこんなデータベースに出くわした場合このやり方を使うんだよ!
みたいですかね!?
 まだ知識不足なので、教科書を進めていくことで、理解を深
めたいと思います。
 まだまだ未熟ものなので今後ともよろしくお願いいたします。

お礼日時:2021/08/10 04:38

テーブルの名前が長いとき



例)
select ものすごく大事な情報.管理番号, むちゃんこ重要な情報.金額
from ものすごく大事な情報
left join むちゃんこ重要な情報
on ものすごく大事な情報.管理番号 = むちゃんこ重要な情報.管理番号

別名(alias) を利用することで SQL を短く書けます
名前が変わっただけなので、実行結果は変わりません

例)
select A.管理番号, B.金額
from ものすごく大事な情報 as A
left join むちゃんこ重要な情報 as B
on A.管理番号 = B.管理番号

ご提示の場合ですとあまり意味はなさそうですが、
実務ではテーブル名はどうしても長くなる傾向にあるので、
別名を使えば SQL の短縮化と可読性向上を図れます
    • good
    • 1
この回答へのお礼

ご回答くださいまして、ありがとうございました。
エイリアスは長くなる名前の変更ができることは
わかります。
 正直なところを話します。

mysql> SELECT tb.bang,tb1.nama,tb.uria FROM tb JOIN tb1 ON tb.bang=tb1.bang;


mysql> select x.bang,y.nama,x.uria from tb as x join tb1 as y on x.bang=y.bang;

ですが、結局同じで表示されるのはなぜなのか?

表示されるのが同じだったら、その作業する意味はなんですか?

薬であれば、効能がなければ、服用する意味がなく 逆に
毒効果がある服用しないほうがいいと思います。 

しかし、例えば名前が長い人ギネスでは57文字
Rhoshandiatellyneshiaunneveshenk Koyaanisquatsiuth Williams
さんだそうでが、仮に これが カラム名だっとしますと
②のエイリアスを使っても
CREATE TABLE tb1(bang VARCHAR(100),nama VARCHAR(100),tosi INT);
とした場合、57文字出てて来てしまいますよね、何も意味がない
と私的には思います。
  
 そこのところはどうなんでしょうかね?
疲れると思いますが、よろしくお願いいたします。

お礼日時:2021/08/07 05:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す