- 投稿日:2019-12-22T18:43:44+09:00
【MySQL】エイリアスを使える句について
MySQL Advent Calendar 2019の20日目エントリです。
枠が空いていたので、遅ばせながら参加させていただきました。
記事に特別感は全くありません。
エイリアスの動作について、最近の気づきをまとめました。テスト用テーブルの準備
テーブルを用意します。
CREATE TABLE sales( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, sales_date DATETIME, price INT );適当にレコードをセットします。
mysql> SELECT * FROM sales; +----+---------------------+-------+ | id | sales_date | price | +----+---------------------+-------+ | 1 | 2019-10-01 00:00:00 | 100 | | 2 | 2019-10-05 00:00:00 | 300 | | 3 | 2019-11-01 00:00:00 | 200 | | 4 | 2019-11-20 00:00:00 | 100 | | 5 | 2019-12-01 00:00:00 | 500 | +----+---------------------+-------+ 5 rows in set (0.00 sec)句の中でエイリアスを使う
試しに
GROUP BY句
の中でエイリアスを使ってみます。SELECT DATE_FORMAT(sales_date, '%Y%m') AS sales_month, COUNT(id) AS sales_count FROM sales GROUP BY sales_monthグループ化がされ、正しく反映されました。
+-------------+-------------+ | sales_month | sales_count | +-------------+-------------+ | 201910 | 2 | | 201911 | 2 | | 201912 | 1 | +-------------+-------------+カラム名との重複に注意
エイリアスとカラム名(sales_date)が重複していると、GROUP BY句の中では
sales_dateカラム
の方が優先されてしまいます。SELECT DATE_FORMAT(sales_date, '%Y%m') AS sales_date, COUNT(id) AS sales_count FROM sales GROUP BY sales_dateエイリアスではなく
sales_date
としてグループ化されてしまい、期待する結果が得られませんでした。+------------+-------------+ | sales_date | sales_count | +------------+-------------+ | 201910 | 1 | | 201910 | 1 | | 201911 | 1 | | 201911 | 1 | | 201912 | 1 | +------------+-------------+エイリアスが使える句
はじめ、評価順は
SELECT
の方がGROUP BY
より後なので、句の中でエイリアスは使えないと思っていました。
SELECT文の評価順序の話他には、
ORDER BY句
やHAVING句
の中でエイリアスが使えます。
B.5.5.4 カラムエイリアスに関する問題SELECT DATE_FORMAT(sales_date, '%Y%m') AS sales_month, COUNT(id) AS sales_count, SUM(price) AS sales_price FROM sales GROUP BY sales_month HAVING sales_month > '201910' ORDER BY sales_month DESC+-------------+-------------+-------------+ | sales_month | sales_count | sales_price | +-------------+-------------+-------------+ | 201912 | 1 | 500 | | 201911 | 2 | 300 | +-------------+-------------+-------------+この動作はMySQLの
拡張機能
だそうです。
他のDBMSにおける挙動は、各リファレンスを参照しなければ分かりません。
ORDER BY句で別名が使えてGROUP BY句では別名が使えない理由ただし、標準SQLによると
WHERE句
ではエイリアスを使えないとのことです。お読みいただきありがとうございました。
良いクリスマスを!
- 投稿日:2019-12-22T16:28:17+09:00
Web開発勉強のためWordpressでポートフォリオサイトを開設するまで③〜XAMPPローカル環境構築失敗編〜
XAMPPでローカル環境を構築できたといったな。あれは嘘だ。
いや、嘘ではないんですけど、うまくいったのはインストールまででした。
講座の動画に従って投稿や固定ページの更新をしたところ、
「更新に失敗しました。 エラーメッセージ: 返答が正しい JSON レスポンスではありません。」
というエラーメッセージが表示され、なにもできない状態でした。いまだにデータ交換をテキストやらCSVでやっている仕事ですので、XMLはおろかJSONとは、みたいな状態で、ググってもいまいち解決方法がピンとこない・・・
UdemyのQ&Aを覗いても同様の質問がなかったため、思いきって自ら質問してみました。
すると、すぐに先生自ら回答をくださいました!php.iniのmax_execution_timeをデフォルト設定から300に変更して、Apacheを再起動してみてください。
とのこと。ちなみにこの日は有給予定だったので平日朝の7時ぐらいに書きこみました。
先生ヒマなのかしら。
というわけで、php.iniを探してパラメーターを上書き。
念のためPCも再起動しましたが・・・残念ながら改善せず。
どうするかなあと悩みましたが、この時点でもうローカル環境は諦めるつもりでした。
Railsチュートリアルやろうとした時のAWSアカウント、まだ無料枠残ってるからそれ使って環境構築すればええやん、と。
程度にもよりますが、初心者向けの講座もろもろいじって無料枠超えても1000円は取られないらしいので、今後のAWSの勉強も兼ねてAWSで環境構築することにしました。というわけで、先生にはうまくいかなかったことと、AWSで環境構築する旨をお伝えしました。
先生からも、XAMPP とWordPressのいずれが原因かどうか切り分けるために、AWSやVPSなどでApacheやNginxで試してみるのがよいと思います。
とのご回答が。
めんどくさくなったんですね、わかります。ちなみに先生からlogsフォルダにエラーログ出てない?と聞かれたんですが、残念ながらエラーログは見当たりませんでした。
これでAWSの環境構築を試してうまくいかなかったら、いよいよMAC買うしかないな、と思いました。そんな背水の覚悟で臨んだAWSのWordpress環境構築ですが、下記のサイトを参考にしました。
・https://skillhub.jp/blogs/197結論から言うと、ようやくうまくいきました。
ターミナルの開き方とかAWSの操作面で不安がありましたが、それほど難しくないと思います。
投稿や固定ページの更新も問題なくオーケー。
ようやくスタートラインに立てたかなという感じです。
次回からは、サイトを作っていく中でつまづいた点などを書いていきたいと思います。
- 投稿日:2019-12-22T15:10:21+09:00
Web開発勉強のためWordpressでポートフォリオサイトを開設するまで②〜MAMPローカル環境構築失敗編〜
Wordpressの講座で、ローカルで使用環境を構築するための案内をしていたので、動画に沿って環境構築をしていきました。
PCは動画ではMacを使って案内していましたが、当方Windowsでの環境構築となります。
ちなみに使用PCのスペックは、
・Windows10 HOME バージョン1909
・CPU Cerelon(R) N4000CPU 1.10GHz 1.10GHz
・メモリ 4GB
・ストレージ HDD1TB
です。(ムダにHDD1TBなのがツッコミどころですw)まずMAMPをインストールするよう案内されました。
・https://www.mamp.info/
LAMPをもじったオープンソースで、Webサーバーの環境構築が簡単にできるソフトです。
WindowsだからWAMPだよなーと思いつつ無事にインストールまで完了。動画の案内通り、MAMPのフォルダ内にあるhtdocs内にダウンロードしたWordpress一式を移動。
MAMPを起動させ、ブラウザが起動したのでパスにWordpressのフォルダ名を指定。
この時点でインストール画面が表示されるはずなのですが・・・うまくいかない。
ネットを調べていたところ、wp-config.phpをパスに指定すればオーケーとのことだったのでその通りに操作。
(参考サイト:MAMP・Wordpressセットアップの詳細な手順はこちらのサイトで丁寧に解説されています。)
・https://bazubu.com/how-to-insall-wp-in-mamp-23798.html
無事にセットアップ画面が表示されたので、データベースを作成。
Wordpressのセットアップ手順に従い、データベース名やサイト名を入力。
無事にダッシュボード画面が開きました!わーぱちぱちぱち!え、ローカル環境構築失敗してないじゃないかって?
そう、タイトル詐欺です。ここまでは。
とりあえずその日はそこまでで操作を終え、翌日にMAMPを起動したところ・・・あれ?Apacheに緑のランプがつかないぞ?
まあいいかと気にせずWordpressを開こうとするもエラーに。そりゃそうだ。
ネットで調べていたらポート番号が別のアプリケーションと被ってダメなことがあるらしい。
ならばとポート番号をいろいろ変更するも・・・やはりApacheのグリーンライトは点灯せず。
うーむ、困ったなあ・・・と思っていたところ、そういえばUdemyには講座ごとにQ&Aが存在していたことを思い出す。
Q&Aを眺めていたところ、同様の質問が何件か。やはりけっこうある現象なのね。
講師の先生が自ら原因を探っていくも、最終的にはXAMPPを使っては?という回答に大半が落ち着いている。めんどくさくなったんですね、わかります。ということで、自分もXAMPPをインストールしました。
・https://www.apachefriends.org/jp/index.html
インストール手順は下記のサイトを参考にしました。
・https://bazubu.com/xampp-wordpress-23795.htmlMAMPよりボタンとか項目が多いので戸惑うかもしれませんが、基本の流れは一緒なのですんなりインストールできました。
念のためPCを再起動しても問題ないか確認したところ、無事にWordpressのダッシュボード画面を開くことができました!というわけで、MAMPでうまくいかなかった皆様、その時はXAMPPをインストールしましょう!
- 投稿日:2019-12-22T00:13:36+09:00
heroku run rails db:migrate:status のコマンドの意味
目的
- 表題のコマンドをあまり理解せず実行していたのでまとめる。
- コミュニティやtwitterで教えていただいた内容を忘れないようにまとめる。
heroku run rails db:migrate:statusとは
- herokuサーバでのマイグレーションステータスを出力するコマンドである。
- ちなみにherokuサーバへのマイグレーションを行うコマンドは
$ heroku run rails db:migrate
である。結論
コマンドを分解してみる
heroku run
の意味を下記に記す。
- run a one-off process inside a Heroku dyno→「 Heroku dyno内で1回限りのプロセスを実行する。」(コマンド
$ heroku --help
で調べた。)- dynoはアプリを実行するためのコンテナのことらしい、「そのコンテナ内で後述するプロセスを実行するよ〜」って感じ。
rails db:migrate:status
の意味を下記に記す。
- 「マイグレーションのステータス(upまたはdown)を表示する。」(こちらのリンク先に記載があったhttps://railsguides.jp/active_record_migrations.html)
ちなみに
- Rails5以降は
rails
コマンドを実行すればrake
コマンドを探して実行してくれるらしい。- なので下記コマンドは同じ挙動をする。
$ heroku run rails db:migrate:status $ heroku run rake db:migrate:statusだけど
rails
コマンドを実行するとrake
までコマンドを探しに行って実行してくれる。rake
コマンドを実行してもrails
コマンドを探しに行ってくれない。参考にしたリンクを載せる
rails db:migrate:statusコマンドの説明
Rakeコマンドの実行
dynoの説明
謝辞
- 本投稿内容はTwitter、コミュニティのslack、キャリアアドバイザーさんからいただいた知識です。
- 毎度知恵をおお貸しいただき本当にありがとうございます。